【发布时间】:2021-10-19 13:31:29
【问题描述】:
我的条形图中的 20 个条有标签存储在
channels=['a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u']
每个标签都有一个 0 到 100 之间的非负整数,我想一次绘制 5 个条形图,使用滑块在通道中前进。我正在尝试修改Scrollable Bar graph matplotlib 的方法来这样做。到目前为止,这是我所拥有的:
fig,ax=plt.subplots(figsize=(10,6))
x=np.arange(1,20)
y=np.random.randint(0,100, len(x))
channels=
['a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s','t','u']
N=5
def bar(pos):
pos = int(pos)
ax.clear()
if pos+N > len(x):
n=len(x)-pos
else:
n=N
X=x[pos:pos+n]
Y=y[pos:pos+n]
ax.bar(X,Y,width=0.7,align='edge',color='green',ecolor='black')
for i,txt in enumerate(X):
ax.annotate(channels[i], (X[i],Y[i]))
barpos = plt.axes([0.18, 0.05, 0.55, 0.03], facecolor="skyblue")
slider = Slider(barpos, 'Channel', 0, len(x)-N, valinit=0,valstep=1)
slider.on_changed(bar)
bar(0)
plt.show()
这是半功能性的,但有一个错误和三个小修改我似乎无法弄清楚。
- 目前,当我在滑块上前进每一帧时,N=5 个标签始终是“a”、“b”、“c”、“d”、“e”。当然,我希望改变标签,以便第二帧的标签是'b','c','d','e','f'。
- 我想让我的 y 轴标签在滑块移动时固定,从 0 到 100 以 20 为增量运行。在目前的表格中,y 轴标签随着我移动滑块而变化。 y轴的增量有时是10,有时是20等。最大y轴标签一般是y中所有值的最大值。
- 如何控制每个标签的字体大小?
【问题讨论】:
标签: python matplotlib