如何解决混合hline和axhline
我知道我可以使用hlines
来绘制数据坐标中的线(例如从2.5到5)以及axhline
来绘制轴坐标中的线(例如,从0开始,即图的左边界) ,到1,右边框)。
有没有办法画出混合这两者的线?特别是,我想画一条线,无论xlim是否变化,都从图的左边缘开始(在轴坐标中为0),但在某个固定的x值处结束。
我尝试过
ax.plot([-np.inf,x],[y,y])
但这不起作用。
解决方法
这是基于回调的解决方案。我们创建的艺术家将代表我们的左侧无限线,不提供坐标,因为当更改x限制时,这些艺术家会自动填充。
import matplotlib.pyplot as plt
import numpy as np
figure,ax = plt.subplots()
half_line,= ax.plot([],[],color="black",linestyle="--")
def update_half_line_when_xlims_change(ax):
"""Ensures that the half line always goes from -infinity to the chosen x,regardless of zooming/panning/limits changes."""
# Hardcoded parameters.
xmax = 0
y = -1
# Fetch the current left limit.
xmin,_ = ax.get_xlim()
half_line.set_xdata((xmin,xmax))
half_line.set_ydata((y,y))
ax.callbacks.connect("xlim_changed",update_half_line_when_xlims_change)
# Some dummy data.
X = np.linspace(-1,+1,100)
Y1 = X**2
Y2 = np.sin(X*4)
Y3 = np.log(abs(X)+0.5)
for Y in (Y1,Y2,Y3):
ax.plot(X,Y)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。