如何让ax.vlines绘制的竖线触达图表上下边界?
让
ax.vlines绘制的竖线触达图表上下边界的解决方案 嘿,我明白你的需求——想用ax.vlines画出像axvline那样从图表顶部延伸到底部的竖线对吧?其实问题很简单:axvline会自动使用当前坐标轴的y轴范围来确定竖线的上下端点,但ax.vlines默认需要你手动指定ymin和ymax参数。
我们可以通过ax.get_ylim()获取当前图表的y轴上下限,把这两个值传给ax.vlines的对应参数,这样竖线就能自动铺满整个y轴范围了。结合你的示例代码,修改后的完整实现如下:
import pandas as pd import matplotlib.pyplot as plt # 创建示例数据 df = pd.DataFrame({ 'time': [pd.to_datetime('2016-01-02'), pd.to_datetime('2016-01-03'), pd.to_datetime('2016-01-04')], 'value1': [1, 2, 3], 'value2': [10, 20, 30] }) df.set_index('time', inplace=True) # 绘制折线图 fig, ax = plt.subplots() df.plot(ax=ax) # 获取当前y轴的上下限 y_min, y_max = ax.get_ylim() # 使用ax.vlines绘制触达边界的竖线,这里以2016-01-03为例 ax.vlines(x=pd.to_datetime('2016-01-03'), ymin=y_min, ymax=y_max, color='red', linestyle='--') plt.show()
如果之后你手动调整了图表的y轴范围(比如缩放或者用ax.set_ylim()修改),记得重新获取y_min和y_max再绘制竖线,或者在调整完轴范围后更新ax.vlines的参数,这样竖线就能始终贴合最新的上下边界啦。
内容的提问来源于stack exchange,提问作者ℕʘʘḆḽḘ
相关产品推荐
相关产品推荐

