在PyPlot中反转Y轴
我有一堆随机的x,y坐标散点图。 目前Y轴从0开始并上升到最大值。 我希望Y轴从最大值开始,然后上升到0。
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()
位移阿修斯的答案是正确的,但通常一个较短的方法是扭转有问题的单轴:
plt.scatter(x_arr, y_arr) ax = plt.gca() ax.set_ylim(ax.get_ylim()[::-1])
gca()
函数返回当前的Axes实例, [::-1]
反转列表。
使用matplotlib.pyplot.axis()
axis([xmin, xmax, ymin, ymax])
所以你可以在最后添加这样的东西:
plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])
虽然你可能想在每一端填充,以便极端点不坐在边界上。
如果你是在pylab
模式下的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]))
或者,如果您只想反转X轴,那么
matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))
事实上,你可以倒置两个轴:
matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))
使用ylim()可能是你的目的最好的方法:
xValues = list(range(10)) quads = [x** 2 for x in xValues] plt.ylim(max(quads), 0) plt.plot(xValues, quads)
将导致: