使用matplotlib.pyplot绘制垂直线图

13

我正在尝试在对数图中绘制垂直线。

xv1 = 10

plt.semilogy(t,P,'b')
plt.semilogy(t,Pb,'r')
plt.vlines(xv1,-1,1,color='k',linestyles='solid')
plt.xlabel('Time [s]')
plt.ylabel('P [Pa]')
plt.grid()
plt.show()
在绘图中没有显示出来(却显示了)。 有什么想法吗?谢谢!

1
你能否在你的代码中包含一些(虚假的?)数据吗?如果不知道输入是什么,那么测试就很困难。 - tacaswell
3
为什么要使用半对数图(无法包含值为 y=0 的点),但仍希望垂直线从 -1 延伸到 1?如果您想让一条线跨越整个图形,应该使用 axvline - David Zwicker
@DavidZwicker 完全错过了半对数图.... 你使用的 mpl 版本是什么?在对数图中,如何处理未定义值的剪切已进行一些调整。 - tacaswell
作为额外的说明:如果您希望在对数轴上绘制数据,而这些数据也是负数,请使用 ax.set_yscale("symlog") - Greg
1个回答

29

如果要绘制跨越整个图形范围的垂直线,可以使用axvline。你的代码应该如下:

xv1 = 10

plt.semilogy(t, P, 'b')
plt.semilogy(t, Pb, 'r')
plt.axvline(xv1, color='k', linestyle='solid')
plt.xlabel('Time [s]')
plt.ylabel('P [Pa]')
plt.grid()
plt.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接