在python Panel中,如何在panel.Tabs视图中显示matplotlib图?

e3bfsja2  于 2023-06-28  发布在  Python
关注(0)|答案(1)|浏览(157)

Python Panel库建议使用Bokeh进行绘图,但Bokeh包中缺少一些统计数字。我想使用matplotlib(或者seaborn)来创建可以放置在panel.Tabs中的图形。
例如,以下代码可以工作,但使用Bokeh而不是matplotlib:

import panel as pn
from bokeh.plotting import figure

p1 = figure(width=400, height=400, name="Line 1")
p1.line([1, 2, 3], [1, 2, 3])

p2 = figure(width=400, height=400, name='Line 2')
p2.line([0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 2, 1, 0])

pn.Tabs(p1, p2)

这(正确地)显示:

但是,我每次尝试显示matplotlib中的图像都失败了。像p1 = plt.plot(df['wage'])这样的东西根本不起作用。

vsikbqxv

vsikbqxv1#

Holoviz Panel使用窗格的概念来渲染图形(plotly figures,bokeh figures,matplotlib figures)。例如,要渲染matplotlib图形,必须使用pn.pane.Matplotlibhere is its documentation)。
请注意,它要求使用matplotlib.figure.Figure创建图形,而不是更传统的plt.figure

import matplotlib.pyplot as plt
from matplotlib.figure import Figure
import panel as pn
pn.extension()

fig1 = Figure()
ax1 = fig1.subplots()
ax1.plot([1, 2, 3], [1, 2, 3])

fig2 = Figure()
ax2 = fig2.subplots()
ax2.plot([0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 2, 1, 0])

pane1 = pn.pane.Matplotlib(fig1, dpi=96)
pane2 = pn.pane.Matplotlib(fig2, dpi=96)
pn.Tabs(("title 1", pane1), ("title 2", pane2))

相关问题