limiet voor de y-as instellen in matplotlib

Ik heb hulp nodig bij het instellen van de limieten van de y-as op matplotlib. Hier is de code die ik zonder succes heb geprobeerd.

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))

Met de gegevens die ik voor deze plot heb, krijg ik y-aslimieten van 20 en 200. Ik wil echter de limieten van 20 en 250.


Antwoord 1, autoriteit 100%

Probeer dit eens. Werkt ook voor subplots.

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])

Antwoord 2, autoriteit 19%

Een andere oplossing is om de assen van de plot te krijgen en opnieuw toe te wijzen door alleen de y-waarden te wijzigen:

x1,x2,y1,y2 = plt.axis()  
plt.axis((x1,x2,25,250))

Antwoord 3, autoriteit 15%

Eén ding dat u kunt doen, is uw asbereik zelf instellen door matplotlib.pyplot.axis te gebruiken.

matplotlib.pyplot.axis

from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])

0,10 is voor het bereik van de x-as.
0,20 is voor het bereik van de y-as.

of u kunt ook matplotlib.pyplot.xlim of matplotlib.pyplot.ylim gebruiken

matplotlib.pyplot.ylim

plt.ylim(-2, 2)
plt.xlim(0,10)

Antwoord 4, autoriteit 5%

Je kunt een object instantiëren vanuit matplotlib.pyplot.axesen de set_ylim()erop aanroepen. Het zou ongeveer zo zijn:

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])

Antwoord 5, autoriteit 3%

Dit werkte in ieder geval in matplotlib versie 2.2.2:

plt.axis([None, None, 0, 100])

Waarschijnlijk is dit een leuke manier om bijvoorbeeld alleen xmin en ymax in te stellen, enz.


Antwoord 6, autoriteit 3%

Alleen voor fijnafstemming. Als u slechts één van de grenzen van de as wilt instellen en de andere grens ongewijzigd wilt laten, kunt u een of meer van de volgende uitspraken kiezen

plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value

Bekijk de documentatie voor xlimen voor ylim


Antwoord 7, autoriteit 2%

Om toe te voegen aan het antwoord van @Hima, als je een huidige x- of y-limiet wilt wijzigen, kun je het volgende gebruiken.

import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1 
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
axes.set_xlim(new_xlim)

Ik vind dit vooral handig als ik wil uitzoomen of een klein beetje wil inzoomen vanuit de standaard plotinstellingen.


Antwoord 8

Dit zou moeten werken. Je code werkt voor mij, net als voor Tamás en Manoj Govindan. Het lijkt erop dat u kunt proberen Matplotlib bij te werken. Als je Matplotlib niet kunt updaten (bijvoorbeeld als je onvoldoende beheerdersrechten hebt), kan het misschien helpen om een andere backend met matplotlib.use()te gebruiken.


Antwoord 9

Als een as (gegenereerd door code onder de code in de vraag) het bereik deeltmet de eerste assen, zorg er dan voor dat je het bereik instelt nade laatste plot van die assen.

Other episodes