news 2026/8/22 16:00:33

Plotly高级可视化库的使用方法(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Plotly高级可视化库的使用方法(三)

接(二)继续

同时绘制多条曲线

这是一个关于 Plotly 数据结构和高效绘图的经典问题。当我们想在 Plotly 中同时绘制DataFrame 的多列数据时,关键在于将我们的数据从**宽格式(Wide-Form)**转换为长格式(Long-Form),或者利用 Plotly Express(px)对宽格式数据的自动处理功能。

还是两种模式分开讨论:

方法一:使用 Plotly Express (px) (推荐)
Plotly Express 专门设计了处理宽格式数据的能力,这是最简单的方法。

核心:宽格式数据处理
当在px.line()px.scatter()中传入一个列名列表作为y参数时,Plotly Express 会自动将这些列视为不同的数据系列,并在一张图上绘制它们。

案例:绘制 5 个产品的销售趋势

假设有一个 DataFrame,其中Month是 X 轴,其余 5 列是您想要绘制的 Y 轴数据。

importplotly.expressaspximportpandasaspdimportnumpyasnp# 1. 准备宽格式数据 (Wide-Form Data)df=pd.DataFrame({'Month':pd.to_datetime(['2025-01','2025-02','2025-03','2025-04','2025-05']),'Product_A':np.random.randint(100,150,5),'Product_B':np.random.randint(90,140,5),'Product_C':np.random.randint(110,160,5),'Product_D':np.random.randint(80,130,5),'Product_E':np.random.randint(100,150,5),})# 2. 识别要绘制的所有数据列sales_columns=['Product_A','Product_B','Product_C','Product_D','Product_E']# 3. ✨ 关键步骤:将列名列表传入 y 参数fig=px.line(df,x='Month',# X轴数据y=sales_columns,# Y轴数据:传入一个包含多个列名的列表title='多产品销售趋势对比 (px 宽格式)',template='plotly_dark'# 可选:使用暗黑主题)fig.show()

结果:Plotly Express 会自动生成 5 条不同颜色的曲线,并在图例中以列名 (Product_AProduct_E) 区分。


方法二:手动转换为长格式(适用于 GO 模式和更复杂定制)

虽然px很方便,但如果您需要使用更底层的 Plotly Graph Objects (go) 进行精细定制,或者需要更灵活地处理数据,最好使用 Pandas 的melt()函数将数据转换为长格式(Long-Form)

核心:数据熔化 (Pandasmelt)

长格式数据结构中,所有数值都集中在一列,而用来区分这些数值的类别信息则集中在另一列。

MonthProductSales (Value)
2025-01A100
2025-02A120
2025-01B90
案例:手动转换并用px绘制
importplotly.expressaspximportpandasaspdimportnumpyasnp# 1. 准备宽格式数据(同上)df_wide=pd.DataFrame({'Month':['2025-01','2025-02','2025-03'],'Product_X':[100,120,110],'Product_Y':[80,95,105],})# 2. ✨ 关键步骤:使用 melt() 转换为长格式df_long=df_wide.melt(id_vars=['Month'],# 保持不变的 ID 列value_vars=['Product_X','Product_Y'],# 需要 "熔化" 的数据列var_name='Product',# 新的类别列名称value_name='Sales'# 新的数值列名称)# df_long 结构:Month, Product, Sales# 3. 使用 px.line 绘制长格式数据# 现在只需要告诉 px 哪个列用于颜色分组fig=px.line(df_long,x='Month',y='Sales',color='Product',# 自动按 'Product' 分组绘制两条线title='多产品销售趋势对比 (长格式)')fig.show()
  1. 最快、最简单:如果数据已经是宽格式(X 列 + 多 Y 列),直接使用px.line(df, x='X_col', y=['Y1', 'Y2', 'Y3', ...])
  2. 精细定制或复杂场景:如果需要使用go模式,或者数据结构比较复杂,请先使用 Pandasmelt()转换为长格式,再使用px.line(df_long, x='X_col', y='Value_col', color='Group_col')

plotly的保存成文件

Plotly 图表 (fig) 的导出方法主要依赖于fig.write_html()fig.write_image()

目标格式导出方法所需依赖
交互式 HTMLfig.write_html()无需额外依赖
静态图片/PDFfig.write_image()必须安装kaleido(pip install kaleido)

案例

# 保存为文件fig.write_html("my_chart.html",include_plotlyjs='cdn')# 获取字符串html_content=fig.to_html(full_html=False)嵌入网页用# 保存为 SVG 矢量图fig.write_image("my_chart.svg")# 保存为 PDF 矢量图fig.write_image("my_chart.pdf")# 保存 PNG,并设置 2 倍缩放因子提高清晰度fig.write_image("my_chart.png",scale=2)# 保存 JPEG,并指定尺寸fig.write_image("my_chart.jpeg",width=800,height=600)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 15:29:40

影视配音新方式:GPT-SoVITS实现角色声音复刻

影像与声音的重构:用 GPT-SoVITS 实现角色语音的“数字永生” 在一部经典老片修复项目中,团队面临一个棘手问题:主角的关键对白因原始磁带损坏而缺失,而配音演员已年逾古稀、无法重新录制。传统补录方案几乎不可行——直到他们尝试…

作者头像 李华
网站建设 2026/8/22 8:05:07

19.1 UVM Phase流程详解?

🎯 一、两张图的关系:整体 vs 局部 图1 图2中run_phase的"放大镜" 图2 (总览)对应的图1 (详细分解)run_phase (一个大盒子)拆成12个小phase:pre_reset → reset → post_reset → pre_configure → … → post_shutdown 这就像是…

作者头像 李华
网站建设 2026/8/22 1:42:09

16、Linux 系统下的图像编辑指南

Linux 系统下的图像编辑指南 在 Linux 系统中,图像编辑是一项常见且实用的技能。无论是处理数码照片、绘制图形,还是进行图像格式转换,都有许多工具可供选择。本文将详细介绍一些常用的图像编辑工具和方法,帮助你在 Linux 系统中轻松完成各种图像编辑任务。 1. 图像转换工…

作者头像 李华
网站建设 2026/8/22 8:38:55

30、Linux 文件扩展名、目录设置及资源参考全解析

Linux 文件扩展名、目录设置及资源参考全解析 1. 常见文件扩展名 文件类型通常表明文件中数据的类型,一般分为文本、图像、音频或二进制。以下是常见文件扩展名及其对应的文件类型和格式说明: | 扩展名 | 文件类型 | 格式描述 | | ---- | ---- | ---- | | .aiff | 音频 …

作者头像 李华
网站建设 2026/8/21 9:25:44

AI原生应用领域思维树:助力业务增长

AI原生应用领域思维树:助力业务增长 关键词:思维树(Tree of Thoughts)、AI原生应用、大语言模型、业务增长、多路径推理 摘要:本文将带你走进「思维树(Tree of Thoughts, ToT)」这一前沿AI技术与「AI原生应用」的深度融合场景。我们将用“小明的智能奶茶店”故事贯穿全文…

作者头像 李华