我有一堆隨機x,y座標的散點圖。目前,Y軸從0開始並達到最大值。我想Y軸開始在最大值,並上升到0。PyPlot中的反向Y軸
points = [(10,5), (5,11), (24,13), (7,8)]
x_arr = []
y_arr = []
for x,y in points:
x_arr.append(x)
y_arr.append(y)
plt.scatter(x_arr,y_arr)
我有一堆隨機x,y座標的散點圖。目前,Y軸從0開始並達到最大值。我想Y軸開始在最大值,並上升到0。PyPlot中的反向Y軸
points = [(10,5), (5,11), (24,13), (7,8)]
x_arr = []
y_arr = []
for x,y in points:
x_arr.append(x)
y_arr.append(y)
plt.scatter(x_arr,y_arr)
有一個新的API使得它更簡單。
plt.gca().invert_xaxis()
和/或
plt.gca().invert_yaxis()
axis([xmin, xmax, ymin, ymax])
所以,你可以在最後這樣添加的東西:
plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])
雖然你可能想在每一端填充,以便極端點不坐在邊界上。
希望我可以標記你們兩個正確。感謝DisplacedAussie! – DarkAnt 2010-01-14 17:48:47
DisplacedAussie的回答是正確的,但通常更短的方法只是扭轉問題單軸:
plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])
其中gca()
函數返回當前軸實例和[::-1]
反轉的列表中。
這似乎是對我更好的答案。 :) – DisplacedAussie 2010-01-12 23:07:25
'plt.ylim(plt.ylim()[:: - 1])'爲我工作。 – 2013-10-30 08:40:31
如果您在IPython的是在pylab
模式,然後
plt.gca().invert_yaxis()
show()
的show()
需要,使其更新當前的身影。
另一個類似的方法與上述是使用plt.ylim
例如:
plt.ylim(max(y_array), min(y_array))
此方法適用於我,當我試圖在Y1和/或Y2
化合物多個數據集可替代地,你可以使用matplotlib.pyplot.axis()功能,它可以讓你的任何反轉的情節軸
ax = matplotlib.pyplot.axis()
matplotlib.pyplot.axis((ax[0],ax[1],ax[3],ax[2]))
或者,如果你喜歡ONL Ÿ反向X軸,然後
matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))
事實上,你可以反轉兩個軸:使用ylim()可能是你的目的,最好的辦法
matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))
我認爲這是目前正確的答案。 – heltonbiker 2012-05-04 18:53:23
它絕對是。 – 2013-02-12 15:59:47
請注意,您必須在*軸反轉之前設置軸限制*,否則它將再次反轉。 – TheBigH 2016-01-22 15:56:58