如何用Plotly按DataFrame列值绘制自适应多条折线图?
自适应绘制多水果数量随时间变化的折线图
核心思路
无需手动过滤数据,利用可视化库的分组参数或数据透视功能,让程序自动识别fruit列的所有类别并生成对应折线,完全自适应类别数量变化。
步骤1:数据预处理
首先将date列转换为datetime类型,确保x轴按时间顺序正确排列:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 构造示例DataFrame(实际场景可替换为你的数据读取逻辑) data = { 'fruit': ['apple', 'banana', 'apple', 'banana'], 'number': [7, 8, 2, 103], 'date': ['2013-11-4', '2016-4-6', '2018-7-22', '2020-4-4'] } df = pd.DataFrame(data) # 转换日期列格式 df['date'] = pd.to_datetime(df['date'])
步骤2:自适应绘图方案
方案一:Seaborn 自动分组绘图(推荐)
通过hue='fruit'参数自动按水果类别分组,直接生成多条折线,新增水果类别无需修改代码:
# 设置绘图风格 sns.set_style("whitegrid") # 绘制折线图,自动识别所有水果类别 sns.lineplot(data=df, x='date', y='number', hue='fruit', marker='o') # 优化图表显示 plt.title('Fruit Number Over Time') plt.xlabel('Date') plt.ylabel('Number') plt.gcf().autofmt_xdate() # 自动旋转x轴日期标签,避免重叠 plt.show()
方案二:Pandas 透视表绘图
先将数据转为宽表格式,再直接调用plot方法,同样支持自适应类别:
# 透视数据:以date为索引,fruit为列,number为值 pivot_df = df.pivot(index='date', columns='fruit', values='number') # 绘制折线图 pivot_df.plot(marker='o') # 优化图表显示 plt.title('Fruit Number Over Time') plt.xlabel('Date') plt.ylabel('Number') plt.gcf().autofmt_xdate() plt.legend(title='Fruit') plt.show()
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

