modules.plotters 模块帮助
本章节包含 modules.plotters 包中常用「数据可视化」模块的使用说明和示例,例如:
折线图、柱状图、散点图等基础图表模块
面向工程数据的专业绘图模块
本文档覆盖 gdisdk/modules/plotters.py 中的全部可视化模块:
LineChartPlotter:折线图BarChartPlotter:柱状图ScatterChartPlotter:散点图HistogramPlotter:直方图PieChartPlotter:饼图 / 环形图TablePlotter:表格(HTML + PlotData)PlotMerger:合并多个 PlotData 为复合图表
本页模块共用:上传 GDIM 前检查
适用模块:
LineChartPlotter/BarChartPlotter/ScatterChartPlotter/HistogramPlotter/PieChartPlotter/TablePlotter/PlotMerger
必须检查:
上传后主要会使用
OutputPlotData,请保持generate_plot_data=True;上传前优先关闭文件输出,避免生成多余的本地 HTML / 图片文件:
大多数图表模块使用
generate_files=False;TablePlotter使用generate_file=False。
建议检查:
PlotMerger的上游图表模块也应能稳定提供OutputPlotData,否则合并模块可能拿不到输入;仅在非常明确需要额外保留文件结果时,才重新开启
OutputHtmlFile/OutputImageFile对应的文件输出。
若遗漏,常见现象:
本地测试时能正常生成 HTML / 图片文件,但上传 GDIM 后这些本地文件输出通常不是平台真正需要的结果;
PlotMerger在上传后运行时拿不到上游OutputPlotData,导致复合图为空或不完整。
LineChartPlotter
模块简介与适用场景
LineChartPlotter用于将TableData/pandas.DataFrame绘制为折线图,并输出:OutputPlotData:用于 GDIM / Web 前端渲染的 JSON 图表数据;OutputHtmlFile/OutputImageFile:可选的本地 HTML / 图片文件(由generate_files与output_formats控制)。
典型场景:时间序列趋势、监测曲线、多指标对比、预测曲线与实测曲线展示等。
端口说明
输入端口 -
InputData:输入表格数据(TableData或pandas.DataFrame)输出端口 -
OutputPlotData:图表 JSON 数据(用于 GDIM / Web 前端渲染;当generate_plot_data=False时为None) -OutputHtmlFile:输出交互式 HTML 文件路径(当generate_files=False或output_formats未包含"html"时为None) -OutputImageFile:输出图片文件路径(PNG/JPEG;当generate_files=False或output_formats未包含"image"时为None)
快速上手示例
from gdisdk.modules.plotters import LineChartPlotter
plotter = LineChartPlotter(
mname="LineChart",
x_column="Month",
y_columns=["Temperature", "Humidity"],
chart_title="月度变化趋势",
output_name="monthly_trend",
generate_files=True, # 同时生成文件输出
output_formats=["html"], # 只生成 HTML(如需图片可加 "image")
)
# 将 plotter.InputData 连接到上游表格输出端口后运行(见下方 pipeline 示例)
# 运行完成后,可从以下端口读取结果:
# plotter.OutputPlotData.data / plotter.OutputHtmlFile.data / plotter.OutputImageFile.data
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
x 轴列名(字段名或标题均可;未指定时会尝试自动选择)。 |
|
|
|
y 轴列名(单列或多列)。多列时会绘制多条曲线。 |
|
|
|
分组列。用于按类别分色(例如不同测点/工况)。 |
|
|
|
图标题。支持动态模板: |
|
|
|
输出文件基础名(不含扩展名)。 |
|
|
|
输出目录;若 Pipeline 设置了 |
|
|
|
输出格式: |
|
|
|
是否生成 HTML/图片文件。本地测试时可设置为 |
|
|
|
是否生成 |
|
|
|
是否显示点标记(纯曲线可设为 |
|
|
|
是否显示连线(只看散点可设为 |
|
|
|
x 轴刻度格式(日期轴常用),例如 |
|
|
|
Plotly 主题(如 |
高级参数与典型配置示例(可选)
LineChartPlotter 支持通过 **kwargs 传入 Plotly 的 trace/layout 细粒度配置(内部会自动区分并应用)。
plotter = LineChartPlotter(
x_column="时间",
y_columns="观测累计沉降",
show_markers=True,
line_style="dash",
marker_sizes={"观测累计沉降": 8},
marker_symbols={"观测累计沉降": "diamond"},
# 常见的 layout 选项也可直接传入
xaxis_tickangle=-45,
hovermode="x unified",
)
在 pipeline 中的使用方式
from gdisdk.connectors import log_in
from gdisdk.pipeline import PipeLine
from gdisdk.modules.plotters import LineChartPlotter
from gdisdk.modules.readers import GdimTableReader
from gdisdk.modules.filters import TableSelector
pipeline = PipeLine(app_name="ChartPipeline", app_title="折线图示例")
pipeline.update_gdim_state(token=log_in(), proj_id="你的GDIM项目ID")
pipeline.workspace = "test"
read_tables = GdimTableReader("ReadTables", table_fields=["累计沉降数据"])
pick_table = TableSelector("PickTable")
pick_table.table_name = "累计沉降数据"
chart = LineChartPlotter(mname="LineChart", x_column="时间", y_columns="累计沉降")
links = (
read_tables.OutputTable >> pick_table.InputTables
| pick_table.OutputTable >> chart.InputData
)
pipeline.add_links(links)
result = pipeline.run()
print(chart.OutputPlotData.data)
更多信息
BarChartPlotter
模块简介与适用场景
BarChartPlotter用于绘制柱状图(支持单列/多列分组柱状图),常用于 TopN、分类对比、分组统计等场景。输入端口:
InputData``(``TableData/DataFrame)输出端口:
OutputPlotData、OutputHtmlFile、OutputImageFile
端口说明
输入端口 -
InputData:输入表格数据(TableData或pandas.DataFrame)输出端口 -
OutputPlotData:图表 JSON 数据(当generate_plot_data=False时为None) -OutputHtmlFile:输出交互式 HTML 文件路径(当generate_files=False或output_formats未包含"html"时为None) -OutputImageFile:输出图片文件路径(PNG/JPEG;当generate_files=False或output_formats未包含"image"时为None)
快速上手示例
from gdisdk.modules.plotters import BarChartPlotter
plotter = BarChartPlotter(
mname="PlotBar",
x_column="因子名称",
y_columns="因子超标倍数",
chart_title="因子超标倍数 Top10",
output_name="bar_top10",
orientation="vertical",
)
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
类别轴列(柱子所属类别)。 |
|
|
|
值列。多列会生成分组柱状图。 |
|
|
|
分组列(按类别上色)。通常与多 |
|
|
|
“vertical”(竖向)或 “horizontal”(横向)。 |
|
|
|
|
|
|
|
是否生成文件输出。本地测试时可设置为 |
|
|
|
是否生成 |
在 pipeline 中的使用方式
from gdisdk.pipeline.pipeline import PipeLine
from gdisdk.modules.plotters import BarChartPlotter
pipe = PipeLine(app_name="BarDemo", app_title="柱状图示例", version="1.0.0")
plot_bar = BarChartPlotter(mname="PlotBar", x_column="类别", y_columns="数值")
# links = upstream.OutputTable >> plot_bar.InputData
# pipe.add_links(links)
# pipe.run()
更多信息
ScatterChartPlotter
模块简介与适用场景
ScatterChartPlotter用于绘制散点图(可选趋势线、按颜色/大小映射),适用于相关性分析、实测点展示、分组对比等。输入端口:
InputData``(``TableData/DataFrame)输出端口:
OutputPlotData、OutputHtmlFile、OutputImageFile
端口说明
输入端口 -
InputData:输入表格数据(TableData或pandas.DataFrame)输出端口 -
OutputPlotData:图表 JSON 数据(当generate_plot_data=False时为None) -OutputHtmlFile:输出交互式 HTML 文件路径(当generate_files=False或output_formats未包含"html"时为None) -OutputImageFile:输出图片文件路径(PNG/JPEG;当generate_files=False或output_formats未包含"image"时为None)
快速上手示例
from gdisdk.modules.plotters import ScatterChartPlotter
plotter = ScatterChartPlotter(
mname="PlotScatter",
x_column="时间",
y_columns="观测累计沉降",
chart_title="观测累计沉降散点",
marker_symbol="circle",
marker_size=8,
show_trendline=False,
)
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
x 轴列名。 |
|
|
|
y 轴列名(单列或多列)。 |
|
|
|
按类别分色(与多 |
|
|
|
点大小映射列。若设置,将忽略 |
|
|
|
是否绘制趋势线(用于相关性/回归可视化)。 |
|
|
|
点样式(如 |
|
|
|
点大小(未设置 |
更多信息
HistogramPlotter
模块简介与适用场景
HistogramPlotter用于绘制直方图(可叠加分组直方图、可选 rug),适用于分布分析、频数统计、异常值检查等。输入端口:
InputData``(``TableData/DataFrame)输出端口:
OutputPlotData、OutputHtmlFile、OutputImageFile
端口说明
输入端口 -
InputData:输入表格数据(TableData或pandas.DataFrame)输出端口 -
OutputPlotData:图表 JSON 数据(当generate_plot_data=False时为None) -OutputHtmlFile:输出交互式 HTML 文件路径(当generate_files=False或output_formats未包含"html"时为None) -OutputImageFile:输出图片文件路径(PNG/JPEG;当generate_files=False或output_formats未包含"image"时为None)
快速上手示例
from gdisdk.modules.plotters import HistogramPlotter
plotter = HistogramPlotter(
mname="Hist",
column="孔隙比",
bins=30,
bar_mode="overlay",
opacity=0.7,
chart_title="孔隙比分布",
)
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
要统计分布的数值列。 |
|
|
|
分组列(叠加/分组显示不同类别分布)。 |
|
|
|
分箱数。 |
|
|
|
多组直方图展示方式: |
|
|
|
透明度(叠加模式下常用)。 |
|
|
|
是否显示 rug(边缘点分布)。 |
更多信息
PieChartPlotter
模块简介与适用场景
PieChartPlotter用于绘制饼图/环形图(通过hole_size控制),适用于占比结构展示(如类型占比、来源占比等)。输入端口:
InputData``(``TableData/DataFrame)输出端口:
OutputPlotData、OutputHtmlFile、OutputImageFile
端口说明
输入端口 -
InputData:输入表格数据(TableData或pandas.DataFrame)输出端口 -
OutputPlotData:图表 JSON 数据(当generate_plot_data=False时为None) -OutputHtmlFile:输出交互式 HTML 文件路径(当generate_files=False或output_formats未包含"html"时为None) -OutputImageFile:输出图片文件路径(PNG/JPEG;当generate_files=False或output_formats未包含"image"时为None)
快速上手示例
from gdisdk.modules.plotters import PieChartPlotter
plotter = PieChartPlotter(
mname="Pie",
labels_column="超标因子类型",
values_column="超标因子类型占比",
hole_size=0.4, # 0=饼图,0.4~0.6 常用环形图
text_info="label+percent",
chart_title="超标因子类型占比",
output_name="factor_type_pie",
)
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
扇区标签列。 |
|
|
|
扇区数值列。 |
|
|
|
中心孔洞比例(0-1),用于环形图。 |
|
|
|
文本信息: |
|
|
|
文本位置: |
更多信息
TablePlotter
模块简介与适用场景
TablePlotter用于把表格数据渲染为可交互的 HTML 表格,并输出可供前端渲染的PlotData。输入端口:
InputData``(支持 ``TableData/TableCollection/DataFrame)输出端口:
OutputHtmlFile、OutputPlotData典型场景:在报告/看板中展示计算结果表;对
TableCollection的主表/子表进行合并展示;对中文表格做更友好的列宽与自动换行处理。
端口说明
输入端口 -
InputData:输入表格数据(TableData/TableCollection/pandas.DataFrame)输出端口 -
OutputPlotData:表格 PlotData(用于 GDIM / Web 前端渲染;当generate_plot_data=False时为None) -OutputHtmlFile:输出 HTML 表格文件路径(当generate_file=False时为None)
快速上手示例
from gdisdk.modules.plotters import TablePlotter
plotter = TablePlotter(
mname="Table",
table_title="统计结果表",
max_rows=200,
numeric_precision=3,
enable_text_wrapping=True,
generate_file=True,
generate_plot_data=True,
output_name="result_table",
)
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
表格标题(可配合 |
|
|
|
最多展示行数(避免超大表导致输出过大)。 |
|
|
|
指定显示列与顺序(字段名或标题均可)。 |
|
|
|
数值精度(可全局或按列配置)。 |
|
|
|
输入为 |
|
|
|
输入为 |
|
|
|
合并主/子表相关列的重复单元格(更适合 “分组表” 展示)。 |
|
|
|
列宽计算方式:相对比例或绝对像素(超宽时可滚动)。 |
|
|
|
自动换行(更适合中文长文本)。 |
在 pipeline 中的使用方式
from gdisdk.pipeline.pipeline import PipeLine
from gdisdk.modules.plotters import TablePlotter
pipeline = PipeLine(app_name="TableDemo", app_title="表格展示示例", version="1.0.0")
table = TablePlotter(mname="Table", table_title="结果表", max_rows=200)
# links = upstream.OutputTable >> table.InputData
# pipeline.add_links(links)
# pipeline.run()
更多信息
PlotMerger
模块简介与适用场景
PlotMerger用于把多个图表模块输出的PlotData``(例如 ``LineChartPlotter.OutputPlotData、ScatterChartPlotter.OutputPlotData)合并为一个复合图表。输入端口为动态端口:通过
add_dynamic_ports_in("InputPlotData1")、add_dynamic_ports_in("InputPlotData2")等方式添加任意数量的输入端口。输出端口:
OutputPlotData、OutputHtmlFile、OutputImageFile。典型场景:把预测曲线(Line)与实测点(Scatter)合并到同一张图;多来源指标叠加对比;双 y 轴复合图。
端口说明
输入端口 -
InputPlotData1/InputPlotData2/ …:动态输入端口(需要先通过add_dynamic_ports_in(...)创建),输入为PlotData``(来自其它绘图模块的 ``OutputPlotData)输出端口 -
OutputPlotData:合并后的 PlotData(当generate_plot_data=False时为None) -OutputHtmlFile:输出交互式 HTML 文件路径(当generate_files=False或output_formats未包含"html"时为None) -OutputImageFile:输出图片文件路径(PNG/JPEG;当generate_files=False或output_formats未包含"image"时为None)
快速上手示例
from gdisdk.modules.plotters import LineChartPlotter, ScatterChartPlotter, PlotMerger
line_plotter = LineChartPlotter(mname="Line", generate_files=False, y_columns="预测累计沉降")
scatter_plotter = ScatterChartPlotter(mname="Scatter", generate_files=False, y_columns="观测累计沉降")
merger = PlotMerger(
mname="Merger",
chart_title="实测 vs 预测",
enable_secondary_y=False,
output_name="merged_chart",
generate_files=True,
generate_plot_data=True,
)
merger.add_dynamic_ports_in("InputPlotData1")
merger.add_dynamic_ports_in("InputPlotData2")
# 在 pipeline 中连接:
# line_plotter.OutputPlotData >> merger.InputPlotData1
# scatter_plotter.OutputPlotData >> merger.InputPlotData2
参数说明
参数名 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
|
|
是否要求所有动态端口都有数据后才执行合并。 |
|
|
|
合并图标题。支持按源引用: |
|
|
|
是否启用双 y 轴。 |
|
|
|
右轴来源(端口名或索引)。未指定且启用双轴时,默认除第一源外都放右轴。 |
|
|
|
为不同来源的 trace 名称增加前缀(便于图例区分)。 |
|
|
|
颜色策略:保留原色 / 手动覆盖 / 自动分配。 |
|
|
|
|
在 pipeline 中的使用方式
from gdisdk.pipeline.pipeline import PipeLine
from gdisdk.modules.plotters import LineChartPlotter, ScatterChartPlotter, PlotMerger
pipeline = PipeLine(app_name="MergeDemo", app_title="复合图示例", version="1.0.0")
line_plotter = LineChartPlotter("Line", generate_files=False, y_columns="预测累计沉降")
scatter_plotter = ScatterChartPlotter("Scatter", generate_files=False, y_columns="观测累计沉降")
merger = PlotMerger("Merger", generate_files=True, generate_plot_data=True)
merger.add_dynamic_ports_in("InputPlotData1")
merger.add_dynamic_ports_in("InputPlotData2")
# links = (
# upstream1.OutputTable >> line_plotter.InputData
# | upstream2.OutputTable >> scatter_plotter.InputData
# | line_plotter.OutputPlotData >> merger.InputPlotData1
# | scatter_plotter.OutputPlotData >> merger.InputPlotData2
# )
# pipeline.add_links(links)
# pipeline.run()
更多信息