首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在木星外可视化Python交互情节

在木星外可视化Python交互情节
EN

Stack Overflow用户
提问于 2022-05-24 12:10:42
回答 2查看 126关注 0票数 0

我在木星做一些小测试。用户应该看到两个图,一个在左边,一个在右边。在点击左边的某个地方之后,右图上应该会发生一些事情。例如,在这里,单击左边的绘图将在右图上生成一个红色点,位于相同的位置:

代码语言:javascript
运行
复制
%matplotlib notebook


def onclick(event):    
    ax.clear()
    ax2.clear()
    ax.set_xlim(0,10)
    ax.set_ylim(0,10)
    ax2.set_xlim(0,10)
    ax2.set_ylim(0,10)
    ax2.plot([event.xdata],[event.ydata],'o',color='red')
    ax.figure.canvas.draw_idle()
    ax2.figure.canvas.draw_idle()
        

fig = plt.figure(figsize=(20,10))


ax = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
ax.set_xlim(0,10)
ax.set_ylim(0,10)
ax2.set_xlim(0,10)
ax2.set_ylim(0,10)


cid = fig.canvas.mpl_connect('button_press_event',onclick)

这是可行的,但木星的可视化并不是最好的。有没有办法让这种互动的情节在木星笔记本之外工作呢?也许在一个不同尺寸的窗户里?作为一个例子,我们将如何处理上面的例子?

EN

回答 2

Stack Overflow用户

发布于 2022-05-25 16:21:50

您可以巧妙地使用并将您的绘图导出到html文件:

https://plotly.com/python/interactive-html-export/

票数 1
EN

Stack Overflow用户

发布于 2022-05-25 13:47:53

我想我找到了一个可能的简单答案来满足我的需求。只需将代码放在python脚本中,删除“魔术”命令并在末尾插入:

代码语言:javascript
运行
复制
plt.show(block=True)

通过这种方式,matplotlib只需在木星中使用与笔记本或内联不同的后端,并将图形绘制在单独的窗口中。此窗口与matplotlib中的交互式命令兼容。我不确定小部件的兼容性,不过我会尝试更新答案。

更新:我不认为ipywidget可以与plt.show()一起使用,因为这些部件不是在轴上绘制的,但是matplotlib (matplotlib.widgets)中有一些小部件可以使用。但是,在我的例子中,结果的速度并不令人满意,所以我将避免将matplotlib小部件与matplotlib事件捕获结合起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72362654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档