Matplotlibでy軸の範囲を設定するのに手助けが必要です。これが私が試みたコードです、失敗しました。
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))
このプロットに使用したデータでは、y軸の範囲が20と200になります。ただし、範囲20と250が必要です。
これを試して 。サブプロットにも使えます。
axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
あなたのコードは私にも働きます。しかし、別の回避策はプロットの軸を取得してからy値のみを変更することです。
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
できることの1つは、matplotlib.pyplot.axisを使って自分で軸範囲を設定することです。
matplotlib.pyplot.axis
from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])
0、10はx軸範囲用です。 0、20はy軸範囲です。
または、matplotlib.pyplot.xlimまたはmatplotlib.pyplot.ylimを使用することもできます。
matplotlib.pyplot.ylim
plt.ylim(-2, 2)
plt.xlim(0,10)
@ Himaの答えに追加するために、現在のxまたはyの制限を変更したい場合は、次のようにします。
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)
これは、デフォルトのプロット設定から少しだけズームアウトまたはズームインする場合に特に便利です。
これでうまくいくはずです。あなたのコードは、TamásとManoj Govindanのように私のために働きます。 Matplotlibをアップデートしようとしたようです。 Matplotlibを更新できない場合(たとえば、管理者権限が不十分な場合)、おそらくmatplotlib.use()
と別のバックエンドを使用することで解決することがあります。
これは少なくともmatplotlibバージョン2.2.2で機能しました。
plt.axis([None, None, 0, 100])
おそらくこれは例えばxminとymaxだけを設定するのに良い方法です。
matplotlib.pyplot.axes
からオブジェクトをインスタンス化し、それにset_ylim()
を呼び出すことができます。これは次のようになります。
import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])
(問題のコードの下のコードで生成された)Axesがsharing最初のAxesとの範囲)である場合は、必ず範囲afterそのAxesの最後のプロット)を設定してください。