#header-mark#
Matplotlib 图表
PnMatplotlib
组件允许在 Panel 应用程序中显示 Matplotlib 图表。这包括由 Seaborn、Pandas .plot
、Plotnine 和任何其他基于 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
:
总之,通过使用适当组合的 format
、fixed_aspect
和 sizing_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 | 使图像可点击并链接到其他网站的链接 URL | str | 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_classes | CSS类名列表 | list | [] |
Slots
插槽名 | 说明 |
---|---|
default | 自定义默认内容 |
Controls
src/examples/panel_vuepy/panes/Matplotlib