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

将导致: 在这里输入图像说明