0

有没有办法让 matplotlib 中的垂直点划线始终接触 yaxis 的顶部和底部?我正在绘制两条垂直线,它们之间有空间,我希望它们接触到我的 yaxis 的顶部和底部。它们触及 y 轴的底部,但如果我更改起始 y 值,它们只会触及我的绘图的 y 轴顶部,因此线型图案恰好触及顶部。我也尝试使用 ax.vlines 并得到相同的结果。

也许 - 有没有办法改变线条样式中点和破折号的间距来做到这一点?

plt.plot((55843.8747516981, 55843.8747516981), (yminPlot, 4.53), linewidth=2,
         linestyle='-.', color='r')
plt.plot((55843.8747516981, 55843.8747516981), (7.03, ymaxPlot), linewidth=2,
         linestyle='-.', color='r')
4

2 回答 2

2

您可以使用坐标转换(转换教程)。为了在某​​个 x 坐标处从底部到顶部画一条线:

import matplotlib.transformas as transforms

# get current axes
ax = plt.gca()

# define a blended transformation
#   ax.transData ... use data coordinates
#   ax.transAxes ... use axes coordinates ranging from (0,0) to (1,1)
trans = transforms.blended_transform_factory( ax.transData, ax.transAxes )

# plot a vertical line at x=55843.8747516981
# note that the 
plt.plot( (55843.8747516981,55843.8747516981), (0,1), linewidth=2, linestyle='-.', color='r', transform=trans)
于 2016-01-27T09:06:21.027 回答
2

如果我正确理解你的问题,你可以通过改变第二条线的绘制顺序来解决这个问题,从上到下绘制

plt.plot((55843.8747516981, 55843.8747516981), (yminPlot, 4.53), linewidth=2,
         linestyle='-.', color='r')
plt.plot((55843.8747516981, 55843.8747516981), (ymaxPlot, 7.03), linewidth=2,
         linestyle='-.', color='r')
于 2016-01-27T09:14:16.243 回答