• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

matplotlib Python - skalowanie osi

0 głosów
331 wizyt
pytanie zadane 12 maja 2020 w Python przez PgK Obywatel (1,380 p.)

Witam!

Tworzę program w Pythonie, w którym otrzymuję tablicę dwuwymiarową o wymiarach 51 x 1001. Rysuję wykres konturowy za pomocą funkcji contourf() z biblioteki matplotlib.pyplot. Wszystko rysuje się tak jak bym chciał. Potrzebowałbym jednak, żeby wartości na osiach były przeskalowane, to znaczy, żeby zamiast domyślnych x od 0 do 50 i y od 0 do 1000 były np. x od 0 do 10 i y od 0 do 100, ale tak żeby wykres rysował się w całości (a nie tylko jego wycięty fragment z jakiegoś przedziału). Jak można coś takiego zrobić?

plt.contourf(MAPA, 100, cmap = 'seismic')
plt.colorbar()
plt.show()

 

1 odpowiedź

+1 głos
odpowiedź 13 maja 2020 przez DawidK Nałogowiec (37,590 p.)

Wydaje mi się, że przyda Ci się tick formatter.

Przykład dla tablicy [11][6] (bardziej "na czuja" - pewnie można go zrefaktoryzować)

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

main_list = [[45, 29, 27, 43, 36, 25], [6, 34, 30, 4, 23, 11], [7, 26, 44, 43, 0, 42], [35, 12, 14, 17, 28, 38], [2, 37, 19, 42, 21, 30], [13, 35, 28, 3, 39, 17], [43, 31, 48, 4, 25, 13], [23, 3, 6, 16, 50, 4], [19, 1, 20, 8, 7, 35], [0, 46, 29,
0, 22, 45], [24, 17, 39, 14, 23, 7]]

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

scale_x = 10
ticks_x = ticker.FuncFormatter(lambda x, pos: f'{x*scale_x}')
ax.xaxis.set_major_formatter(ticks_x)

scale_y = 10
ticks_y = ticker.FuncFormatter(lambda y, pos: f'{y*scale_y}')
ax.yaxis.set_major_formatter(ticks_y)

plt.contourf(main_list, 100, cmap = 'seismic')
plt.colorbar()
plt.show()

Efekt:

oryginal

zeskalowane osie

Podobne pytania

0 głosów
1 odpowiedź 88 wizyt
pytanie zadane 10 kwietnia w Python przez T100 Obywatel (1,380 p.)
0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 21 lipca 2019 w Python przez Eliro Stary wyjadacz (12,160 p.)
0 głosów
1 odpowiedź 155 wizyt
pytanie zadane 11 maja 2018 w Python przez michal51995 Początkujący (380 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

85,698 zapytań

134,499 odpowiedzi

298,515 komentarzy

56,625 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...