在绘制时间序列时,Y轴定义为:
yAxis = np.arange(minY, maxY, stepY)
ax.set_ylim(minY, maxY)
ax.set_yticks(yAxis)
对于视觉参考,添加一个虚线以突出显示0%" Base"每张附图线。为了说明,此问号由[7]为此问题指定:
yGrid = ax.get_ygridlines()
yBase = yGrid[7]
yBase.set_linestyle('--')
随着时间序列的进展,Y轴将随着minY和maxY限制不断更新而改变。如果范围(minY,maxY)并不总是关于0%"基数"那么我如何设置短划线始终保持在特定的0%刻度点。线?
答案 0 :(得分:1)
不是修改其中一个网格线,而是可以使用axhline
在该点绘制另一条线,然后始终保持在您给出的y位置:
ax.axhline(0, linestyle='--')
答案 1 :(得分:1)
当然,在零网格线上添加一条额外的线是最简单的解决方案。这可以使用ax.axhline(0)
来完成,正如汤姆所指出的那样。
缺点可能是axhline
下面的网格线仍然存在。
回答实际问题:您可以检查哪个网格线是零位置的网格线并设置该线条样式。
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np; np.random.seed(1)
x = np.arange(0,99)
y = np.cumsum(np.random.normal(loc=0.1, size=len(x)))
fig, ax = plt.subplots()
line, = ax.plot([],[], color="plum", lw=2)
ax.grid(color="lightgray", lw=2)
def update_gridline(pos):
yGrid = ax.get_ygridlines()
for i, gl in enumerate(yGrid):
y = gl.get_ydata()
if y[0]==pos:
gl.set_linestyle('--')
gl.set_color('crimson')
else:
gl.set_linestyle('-')
gl.set_color("lightgray")
def update(i):
line.set_data(x[:i],y[:i])
ax.relim()
ax.autoscale_view()
update_gridline(0)
ani = matplotlib.animation.FuncAnimation(fig, update, frames=100, interval=100)
plt.show()