如何解决如何在matplotlib中使用图例选择实现多轴的自动缩放
按照 Hiding lines after showing a pyplot figure 和 How to autoscaled graphs with picking legend (matplotlib)? 中的问题,我目前正在尝试弄清楚如何向多个轴添加自动缩放选项。
我更改了 matplotlib example about legend picking 并添加了第二个轴:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(8,6))
gs = gridspec.GridSpec(2,1,figure=fig)
x = np.arange(10)
ax1 = fig.add_subplot(gs[0,0])
line1,= ax1.plot(x,1 * x,label='y=1x')
line2,5 * x,label='y=5x')
leg1 = ax1.legend(loc='upper left',fancybox=True,shadow=True)
leg1.get_frame().set_alpha(0.4)
ax2 = fig.add_subplot(gs[1,0])
line3,= ax2.plot(x,5 * x ** 2,label='y=5x^2')
line4,1 * x ** 2,label='y=1x^2')
leg2 = ax2.legend(loc='upper left',shadow=True)
leg2.get_frame().set_alpha(0.4)
# we will set up a dict mapping legend line to orig line,and enable
# picking on the legend line
lines = [line1,line2]
lined = dict()
for legline,origline in zip(leg1.get_lines(),lines):
legline.set_picker(5) # 5 pts tolerance
lined[legline] = origline
def onpick(event):
# on the pick event,find the orig line corresponding to the
# legend proxy line,and toggle the visibility
legline = event.artist
origline = lined[legline]
vis = not origline.get_visible()
origline.set_visible(vis)
# Change the alpha on the line in the legend so we can see what lines
# have been toggled
if vis:
legline.set_alpha(1.0)
else:
legline.set_alpha(0.2)
ax1.relim(visible_only=True)
ax1.autoscale_view()
fig.canvas.draw()
fig.canvas.mpl_connect('pick_event',onpick)
plt.show()
但现在我被困在如何调整“on_pick”函数以实现 .relim(visible_only=True)
和 .autoscale_view()
以适用于多个轴。
此外,我真的不明白我需要如何更改代码的以下部分,以便让我的图例选择适用于多个轴。
lines = [line1,lines):
legline.set_picker(5) # 5 pts tolerance
lined[legline] = origline
另一种解决方案是为 Kany 在 Hiding lines after showing a pyplot figure 中提供的代码实现自动缩放功能。但不确定如何完成。
有什么帮助吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。