上线了建的网站免费吗,网站建设如何创业,有什么网站可以做海报,建设旅游网站的好处接#xff08;二#xff09;继续
同时绘制多条曲线
这是一个关于 Plotly 数据结构和高效绘图的经典问题。当我们想在 Plotly 中同时绘制 DataFrame 的多列数据时#xff0c;关键在于将我们的数据从**宽格式#xff08;Wide-Form#xff09;**转换为 长格式#xff08;Lon…接二继续同时绘制多条曲线这是一个关于 Plotly 数据结构和高效绘图的经典问题。当我们想在 Plotly 中同时绘制DataFrame 的多列数据时关键在于将我们的数据从**宽格式Wide-Form**转换为长格式Long-Form或者利用 Plotly Expresspx对宽格式数据的自动处理功能。还是两种模式分开讨论方法一使用 Plotly Express (px) (推荐)Plotly Express 专门设计了处理宽格式数据的能力这是最简单的方法。核心宽格式数据处理当在px.line()或px.scatter()中传入一个列名列表作为y参数时Plotly Express 会自动将这些列视为不同的数据系列并在一张图上绘制它们。案例绘制 5 个产品的销售趋势假设有一个 DataFrame其中Month是 X 轴其余 5 列是您想要绘制的 Y 轴数据。importplotly.expressaspximportpandasaspdimportnumpyasnp# 1. 准备宽格式数据 (Wide-Form Data)dfpd.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 参数figpx.line(df,xMonth,# X轴数据ysales_columns,# Y轴数据传入一个包含多个列名的列表title多产品销售趋势对比 (px 宽格式),templateplotly_dark# 可选使用暗黑主题)fig.show()结果Plotly Express 会自动生成 5 条不同颜色的曲线并在图例中以列名 (Product_A到Product_E) 区分。方法二手动转换为长格式适用于 GO 模式和更复杂定制虽然px很方便但如果您需要使用更底层的 Plotly Graph Objects (go) 进行精细定制或者需要更灵活地处理数据最好使用 Pandas 的melt()函数将数据转换为长格式Long-Form。核心数据熔化 (Pandasmelt)长格式数据结构中所有数值都集中在一列而用来区分这些数值的类别信息则集中在另一列。MonthProductSales (Value)2025-01A1002025-02A1202025-01B90………案例手动转换并用px绘制importplotly.expressaspximportpandasaspdimportnumpyasnp# 1. 准备宽格式数据同上df_widepd.DataFrame({Month:[2025-01,2025-02,2025-03],Product_X:[100,120,110],Product_Y:[80,95,105],})# 2. ✨ 关键步骤使用 melt() 转换为长格式df_longdf_wide.melt(id_vars[Month],# 保持不变的 ID 列value_vars[Product_X,Product_Y],# 需要 熔化 的数据列var_nameProduct,# 新的类别列名称value_nameSales# 新的数值列名称)# df_long 结构Month, Product, Sales# 3. 使用 px.line 绘制长格式数据# 现在只需要告诉 px 哪个列用于颜色分组figpx.line(df_long,xMonth,ySales,colorProduct,# 自动按 Product 分组绘制两条线title多产品销售趋势对比 (长格式))fig.show()最快、最简单如果数据已经是宽格式X 列 多 Y 列直接使用px.line(df, xX_col, y[Y1, Y2, Y3, ...])。精细定制或复杂场景如果需要使用go模式或者数据结构比较复杂请先使用 Pandasmelt()转换为长格式再使用px.line(df_long, xX_col, yValue_col, colorGroup_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_plotlyjscdn)# 获取字符串html_contentfig.to_html(full_htmlFalse)嵌入网页用# 保存为 SVG 矢量图fig.write_image(my_chart.svg)# 保存为 PDF 矢量图fig.write_image(my_chart.pdf)# 保存 PNG并设置 2 倍缩放因子提高清晰度fig.write_image(my_chart.png,scale2)# 保存 JPEG并指定尺寸fig.write_image(my_chart.jpeg,width800,height600)