我如何在Matplotlib的水平柱状图中将最大比例放在顶部?

21 浏览
0 Comments

我如何在Matplotlib的水平柱状图中将最大比例放在顶部?

我有一个散点图,其中包含一堆随机的x、y坐标。目前,Y轴从0开始,到最大值结束。我希望Y轴从最大值开始,到0结束。\n

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)

0
0 Comments

问题出现的原因是作者在使用Matplotlib绘制水平条形图时,希望将占比最大的部分放在图表的顶部,但是默认情况下,Matplotlib会将占比最小的部分放在顶部。

解决方法是使用Matplotlib的scatter函数绘制散点图,并通过调用scatter对象的axes属性获取axes对象。然后使用axes对象的invert_xaxis()方法和invert_yaxis()方法来反转x轴和y轴的坐标轴方向,从而实现将占比最大的部分放在图表的顶部。

具体代码如下:

scatter = plt.scatter(x, y)
ax = scatter.axes
ax.invert_xaxis()
ax.invert_yaxis()

作者之前在绘制3D线框图时,发现得到的数据与地图上的数据不一致,经过思考后发现是x轴的方向问题,需要将x轴反转。

以上是关于如何在Matplotlib的水平条形图中将占比最大的部分放在顶部的问题的原因和解决方法。

0
0 Comments

问题的原因是想在水平条形图中将最大比例放在顶部。解决方法是通过反转y轴坐标来实现。

方法如下:

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

其中,`plt.scatter(x_arr, y_arr)`用于绘制水平条形图,`ax = plt.gca()`获取当前的Axes实例,`ax.get_ylim()`获取y轴坐标范围,`[::-1]`用于反转列表,`ax.set_ylim()`用于设置y轴坐标范围,从而实现反转y轴的效果。

0
0 Comments

问题的出现的原因是作者想在Matplotlib中的水平条形图中将最大比例放在顶部,但默认情况下,条形图中最大比例会放在底部。

解决方法是使用Matplotlib中的新API,在水平条形图中将最大比例放在顶部。具体方法是使用plt.gca().invert_xaxis()plt.gca().invert_yaxis()来反转x轴或y轴。需要注意的是,在反转轴之前,必须设置轴的限制,否则它会再次反转回去。如果能够接受布尔参数就更好了,这样在重复调用时可以轻松地来回反转。

至于如何将invert_yaxis()应用于特定的轴,可以参考Whitcomb在下面的回答。这在使用子图时非常重要,因为要区分不同的轴。

作者可以使用plt.gca().invert_xaxis()plt.gca().invert_yaxis()来将最大比例放在水平条形图的顶部,并在反转轴之前设置轴的限制。如果需要应用于特定的轴,可以参考Whitcomb的回答。

0