直接跳到内容

Matplotlib 图表

PnMatplotlib 组件允许在 Panel 应用程序中显示 Matplotlib 图表。这包括由 SeabornPandas .plotPlotnine 和任何其他基于 Matplotlib 构建的绘图库创建的图表。

PnMatplotlib 组件将以声明的 DPI 将 object 渲染为 PNG 或 SVG,然后显示它。

底层实现为panel.pane.Matplotlib,参数基本一致,参考文档:https://panel.holoviz.org/reference/panes/Matplotlib.html

基本用法

创建一个简单的 Matplotlib 图表并显示:

通过修改图表并使用组件对象的 param.trigger('object') 方法,我们可以轻松更新图表:

与所有其他模型一样,PnMatplotlib 组件也可以通过直接设置 object 来更新:

使用 Matplotlib pyplot 接口

您可能已经注意到,我们在上面没有使用 matplotlib.pyplot API。我们这样做是为了避免需要特意关闭图形。如果图形未关闭,将导致内存泄漏。

您可以使用 matplotlib.pyplot 接口,但随后必须像下面所示特别关闭图形!

修复裁剪问题

如果您发现图形在边缘被裁剪,可以设置 tight=true

响应式图表

如果您希望您的图表能够响应式地适应它们所在的任何容器,那么您应该使用适当的 sizing_mode 结合:

  • format="svg":获得更好看的调整大小后的图表
  • fixed_aspect=true:允许 'svg' 图像独立调整其高度和宽度
  • fixed_aspect=false(默认):允许 'svg' 图像调整其高度和宽度,同时保持宽高比

让我们先使用默认的 'png' 格式和 sizing_mode="stretch_width" 显示:

如果您的窗口宽度较大,您会在两侧看到一些大的粉色区域。如果减小窗口宽度,您会看到图表自适应调整大小。

使用 'svg' 格式可以使图形占据全宽:

但这可能会使图形太高。让我们尝试使用固定的 height

但也许我们希望图形占据全宽。让我们将 fixed_aspect 更改为 false

总之,通过使用适当组合的 formatfixed_aspectsizing_mode 值,您应该能够实现所需的响应式大小调整。

使用 Seaborn

我们建议创建一个 Matplotlib Figure 并将其提供给 Seaborn:

您也可以直接使用 Seaborn,但请记住手动关闭 Figure 以避免内存泄漏:

使用 Pandas.plot

API

属性

属性名说明类型默认值
object要显示的 Matplotlib Figure 对象object None
alt_text添加到图像标签的替代文本。当用户无法加载或显示图像时显示替代文本str None
dpi导出 png 的每英寸点数int 144
encode是否将 'svg' 编码为 base64。默认为 False。'png' 将始终被编码boolean False
fixed_aspect是否强制图像的宽高比相等boolean True
format渲染图形的格式:'png' 或 'svg'str 'png'
high_dpi是否为高 dpi 显示优化输出boolean True
interactive是否使用交互式 ipympl 后端boolean False
link_url使图像可点击并链接到其他网站的链接 URLstr None
tight自动调整图形大小以适应子图和其他艺术元素boolean False
sizing_mode尺寸调整模式str 'fixed'
width宽度int, str None
height高度int, str None
min_width最小宽度int None
min_height最小高度int None
max_width最大宽度int None
max_height最大高度int None
margin外边距int, tuple 5
css_classesCSS类名列表list []

Slots

插槽名说明
default自定义默认内容

Controls

src/examples/panel_vuepy/panes/Matplotlib

Matplotlib 图表已经加载完毕