单击 matplotlib 散点图点以根据点的元数据显示另一个图表?

2023-12-28

我已经得到了this https://stackoverflow.com/a/52261010/11751799在我的机器上运行,它给了我一个想法:我可以根据点的元数据显示一个新图表,而不是打印字符串吗?

为了了解我的数据,我有一个包含实验名称和结果的 SQL 表,然后还有另一个包含整个实验过程的表。它很容易使用matplotlib绘制图表。我想创建一些交互式的东西,我可以在其中绘制实验的最终结果(某种散点图),允许用户更深入地钻取并查看单击点的整个实验的图表。

看来我应该能够修改on_pick函数进行绘图,如以下代码所示。

import matplotlib.pyplot as plt

class custom_objects_to_plot:
    def __init__(self, x, y, name):
        self.x = x
        self.y = y
        self.name = name

a = custom_objects_to_plot(10, 20, "a")
b = custom_objects_to_plot(30, 5, "b")
c = custom_objects_to_plot(40, 30, "c")
d = custom_objects_to_plot(120, 10, "d")

def on_pick(event):
    plt.scatter([1,2,3,4], [5,6,7,8]) # For the real function, run a SQL query to
                                      # get the data needed to do the plot of interest
    plt.title(event)
    plt.show()

fig, ax = plt.subplots()
for obj in [a, b, c, d]:
    artist = ax.plot(obj.x, obj.y, 'ro', picker=5)[0]
    artist.obj = obj

fig.canvas.callbacks.connect('pick_event', on_pick)

plt.show()

当我运行这个时,我收到一个错误:QCoreApplication::exec: The event loop is already running.

Can matplotlib执行我想做的事?

(最终的目标是将这个交互式图表放入panel浏览器窗口,但我现在满足于运行matplotlib从命令行。)


我想出了如何绘制一个新图形。它所需要的只是唯一的名称on_pick, 不只是plt,对于图形和轴。

def on_pick(event):
    my_fig, my_ax = plt.subplots() # New plot with unique name
    my_ax.scatter([1, 2, 3, 4], [5, 6, 7, 8]) # Make the scatterplot
    my_fig.show() # Show the plot
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击 matplotlib 散点图点以根据点的元数据显示另一个图表? 的相关文章

随机推荐