首页 文章

在PyPlot中反转Y轴

提问于
浏览
191

我有一个带有一堆随机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)

7 回答

  • 6

    如果你在 pylab 模式下进行ipython,那么

    plt.gca().invert_yaxis()
    show()
    

    需要 show() 才能更新当前数字 .

  • 2

    或者,您可以使用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]))
    
  • 2

    DisplacedAussie的答案是正确的,但通常较短的方法只是反转有问题的单轴:

    plt.scatter(x_arr, y_arr)
    ax = plt.gca()
    ax.set_ylim(ax.get_ylim()[::-1])
    

    gca() 函数返回当前Axes实例, [::-1] 反转列表 .

  • 35

    有一个新的API使这更简单 .

    plt.gca().invert_xaxis()
    

    和/或

    plt.gca().invert_yaxis()
    
  • 11

    与上述方法类似的另一种方法是使用 plt.ylim 例如:

    plt.ylim(max(y_array), min(y_array))
    

    当我尝试在Y1和/或Y2上复合多个数据集时,此方法适用于我

  • 406

    使用matplotlib.pyplot.axis()

    axis([xmin, xmax, ymin, ymax])

    所以你最后可以添加这样的东西:

    plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])
    

    虽然你可能想要在每一端填充,以便极 endpoints 不会坐在边界上 .

  • 14

    使用ylim()可能是最适合您的方法:

    xValues = list(range(10))
    quads = [x** 2 for x in xValues]
    plt.ylim(max(quads), 0)
    plt.plot(xValues, quads)
    

    将导致:
    enter image description here

相关问题