Python单杠双图

我在 Python 中制作了一个水平条形图,条形图从左到右:

http://img2.mukewang.com/619ccbfc0001400908360255.jpg

我想添加一个额外的水平条,在前一个条的同一水平面上,这次是从右到左。两个水平条应同时出现。


有没有人知道如何做到这一点?如果我使用 reverse 函数,一切都将被反转,但我只需要反转新的特定栏,而无需更改任何其他内容。


理想情况下,在新图片上,新条形图将从右侧出现并在 25 处停止,误差条从 23 到 27 (-/+ 2)。


这是我的脚本:


import numpy as np

import matplotlib.pyplot as plt


plt.figure(figsize=(9.5, 2.7))


# Create horizontal bars

plt.barh(0, 18,height=0.2,facecolor='orange',edgecolor='black',linewidth=2)


plt.errorbar(x=[18], y=[0], xerr=[2],color='black',fmt='none',linewidth=5,zorder=4)


plt.xticks(np.arange(10, 30+1, 1.0),fontsize=14)

plt.yticks([])


plt.xlim(10, 30)

plt.ylim(-.13, .13)


plt.show()


一只萌萌小番薯
浏览 187回答 1
1回答

哆啦的时光机

诀窍是使用left指定栏应该从哪里开始,然后width为您的栏传递一个负数,使其从右向左延伸。由于窗口的右侧也会随着您的数据而变化,您可能还想设置某种参数,即x_max:import numpy as npimport matplotlib.pyplot as pltx_max = 30plt.figure(figsize=(9.5, 2.7))# Create horizontal barsplt.barh(0, 18,height=0.2,facecolor='orange',edgecolor='black',linewidth=2)plt.errorbar(x=[18], y=[0], xerr=[2],color='black',fmt='none',linewidth=5,zorder=4)# new code: use left to specify the start position, then make its width negative# to extend right to leftplt.barh(0, -5, height=0.2, left=x_max, facecolor='red',edgecolor='black',linewidth=2)# place error bars the same as you did for the above.plt.errorbar(x=[x_max - 5], y=[0], xerr=[2],color='black',fmt='none',linewidth=5,zorder=4)plt.xticks(np.arange(10, 30+1, 1.0),fontsize=14)plt.yticks([])plt.xlim(10, x_max)plt.ylim(-.13, .13)plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python