我有一个示例(来自matplotlib)的交互式绘图,我可以从系列中选择要在绘图上显示的行。这很好用,但现在我想将它导出为html。我可以使用mpld3.save_html()
成功执行此操作,但会失去系列选择的交互性。
这是代码
import numpy as np
import matplotlib.pyplot as plt, mpld3
from matplotlib.widgets import CheckButtons
t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(6*np.pi*t)
fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2)
l1, = ax.plot(t, s1, lw=2)
l2, = ax.plot(t, s2, lw=2)
plt.subplots_adjust(left=0.2)
rax = plt.axes([0.05, 0.4, 0.1, 0.15])
check = CheckButtons(rax, ('2 Hz', '4 Hz', '6 Hz'), (False, True, True))
def func(label):
if label == '2 Hz': l0.set_visible(not l0.get_visible())
elif label == '4 Hz': l1.set_visible(not l1.get_visible())
elif label == '6 Hz': l2.set_visible(not l2.get_visible())
plt.draw()
check.on_clicked(func)
mpld3.save_html(fig, 'interactive_fig.html') #save to html here
plt.show()
有没有办法保持这种互动性?
我也试过用泡菜保存,但仍然失去了系列互动。
答案 0 :(得分:1)
无法在convert(int, SUBSTRING (Keyvaluechar, 2, 10))
生成的html文件中维护matplotlib.widget
互动性。这是因为mpld3
生成的javascript在客户端运行,无法访问生成它的Python内核。
您可以使用https://github.com/keedio/flume-ftp-source方法在html版本中实现mpld3
互动性。