如何使用 ipywidgets 排列多个 matplotlib 图

问题描述 投票:0回答:1

问题。 如何使用 ipywidgets 从 matplotlib 图中制作网格(或其他类似布局)?

我的尝试的描述。 我想要两个图,每个女巫都在单独的 matplotlib 图上。我希望将它们转换为 ipython 小部件并以这样的方式排列:一个图位于右侧,另一个图位于左侧,但我得到两个图,其中第一个图位于第二个图的顶部。 我尝试使用 HBox 和 TwoByTwoLayout。

我的代码。

import matplotlib.pyplot as plt
import ipywidgets as widgets

output = widgets.Output()
output1 = widgets.Output()

with output:
    with plt.style.context("ggplot"):
        fig = plt.figure(figsize=(4,4))
        plt.plot([1,2,3], [4,5,6]);
with output1:
    with plt.style.context("ggplot"):
        fig = plt.figure(figsize=(4,4))
        plt.plot([1,2,3], [1,8,5]);

widgets.HBox([output1,output])

from ipywidgets import TwoByTwoLayout 
TwoByTwoLayout(top_left=output,top_right=output1)

我尝试使用的一些来源。 以下是一些我未能将其合并到我的代码中的示例。

第一个, 第二个, 第三个。

附注 我不是程序员,而是试图可视化一些数据的化学家。所以我希望代码尽可能简单。

python matplotlib layout widget ipython
1个回答
0
投票

我自己找到了答案。

我的代码。

%matplotlib widget

import matplotlib.pyplot as plt
import ipywidgets as widgets

with plt.ioff():
    fig1 = plt.figure()
    im1 = plt.scatter([1,2,3],[4,3,1])
    
with plt.ioff():
    fig2 = plt.figure()
    im2 = plt.scatter([2,4,3],[1,6,5])
    
display(widgets.HBox([fig1.canvas, fig2.canvas]))
© www.soinside.com 2019 - 2024. All rights reserved.