Potrzebuję pomocy w ustawianiu granic osi Y na matplotlib. Oto kod, który próbowałem bezskutecznie.
import matplotlib.pyplot as plt
plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C',
marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))
Z danymi, które mam dla tego wykresu, otrzymuję granice osi Y wynoszące 20 i 200. Jednak chcę granice 20 i 250.
python
matplotlib
Curious2learn
źródło
źródło
plt.show()
na końcu, aby pokazać fabułę. Jakiej wersji i którego zaplecza używasz?plt.ylim((25,250))
iplt.ylim(ymax = 250, ymin = 25)
. Korzystam zAgg
backendu.axisbg
obecnie jest przestarzałeOdpowiedzi:
Spróbuj tego . Działa również w przypadku wątków podrzędnych.
źródło
None
która pozostawia obliczenia na matplotlib, np.axes.set_ylim([ymin,None])
Twój kod działa również dla mnie. Jednak innym obejściem może być uzyskanie osi wykresu, a następnie zmiana tylko wartości y:
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
źródło
Jedną rzeczą, którą możesz zrobić, to samodzielnie ustawić zakres osi za pomocą matplotlib.pyplot.axis.
matplotlib.pyplot.axis
0,10 jest dla zakresu osi x. 0,20 jest dla zakresu osi y.
lub możesz również użyć matplotlib.pyplot.xlim lub matplotlib.pyplot.ylim
matplotlib.pyplot.ylim
źródło
Możesz utworzyć obiekt z obiektu
matplotlib.pyplot.axes
i wywołaćset_ylim()
go. Byłoby to coś takiego:źródło
Działa to przynajmniej w wersji matplotlib 2.2.2:
Prawdopodobnie jest to dobry sposób na skonfigurowanie np. Tylko xmin i ymax itp.
źródło
Aby dodać do odpowiedzi @ Hima, jeśli chcesz zmodyfikować bieżący limit x lub y, możesz użyć następujących.
Uważam, że jest to szczególnie przydatne, gdy chcę pomniejszyć lub powiększyć trochę z domyślnych ustawień wydruku.
źródło
To powinno działać. Twój kod działa dla mnie, jak dla Tamás i Manoj Govindan. Wygląda na to, że możesz spróbować zaktualizować Matplotlib. Jeśli nie możesz zaktualizować Matplotlib (na przykład, jeśli masz niewystarczające uprawnienia administracyjne), być
matplotlib.use()
może pomocne może być użycie innego backendu .źródło
matplotlib.use('PDF')
). Korzystam z wersji dostarczanej z najnowszą wersją Enthought Python Distribution. Czy możesz zobaczyć, czy działa z backendem PDF. Dzięki!plt.savefig()
?aPlot =
wplt.subplot
wierszu, że pracuje dla mnie. Wygląda na to, że jeśli przypisze się podplot do takiej zmiennej, należy zastosować inną metodę ustalania granic osi. Czy to prawda?plt.ylim()
stosuje ograniczenia do bieżących osi, które są ustawiane, kiedy to robiszplt.subplot()
. Nie mogę również uwierzyć, żeplt.subplot()
zależy na tym, w jaki sposób wykorzystywane są zwracane osie (wstawiane do zmiennej lub nie, itp.). Więc powiedziałbym, że powinno działać; działa na moim komputerze.Tylko do precyzyjnego dostrojenia. Jeśli chcesz ustawić tylko jedną z granic osi i pozostawić drugą granicę bez zmian, możesz wybrać jedną lub więcej następujących instrukcji
Spójrz na dokumentacji dla xlim i ylim
źródło
Jeśli osie (generowane przez kod pod kodem pokazanym w pytaniu) dzielą zakres z pierwszymi osiami, upewnij się, że ustawiłeś zakres po ostatnim wykresie tych osi.
źródło