You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何为数据列的不同取值分别绘制对应折线图

实现方案

要绘制不同数据库表的存储大小随日志日期变化的折线图,可参考以下可运行代码:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 读取本地CSV文件时使用这行代码,parse_dates参数可直接将日志列转换为时间格式
# df = pd.read_csv("你的CSV文件路径.csv", parse_dates=["log_date"])

# 样例数据构造
data = {'table_name': ['x_table', 'x_table', 'y_table', 'y_table', 'z_table', 'z_table'], 
        'size_mb': [3, 5, 4, 7, 2, 6],
        'log_date': [pd.Timestamp('2020-05-22 08:00:00'), 
                     pd.Timestamp('2020-05-23 08:00:00'), 
                     pd.Timestamp('2020-05-22 08:00:00'),
                     pd.Timestamp('2020-05-23 08:00:00'), 
                     pd.Timestamp('2020-05-22 08:00:00'), 
                     pd.Timestamp('2020-05-23 08:00:00')]}
df = pd.DataFrame(data)

# 绘图配置
plt.figure(figsize=(10, 6))
sns.set_style("whitegrid")

# 核心绘图代码:hue参数按表名分组绘制不同折线
sns.lineplot(data=df, x="log_date", y="size_mb", hue="table_name", marker="o", linewidth=2)

# 图表信息配置
plt.xlabel("日志记录日期", fontsize=12)
plt.ylabel("存储大小(MB)", fontsize=12)
plt.title("各表存储大小变化趋势", fontsize=14)
plt.xticks(rotation=45)
plt.legend(title="数据库表名")
plt.tight_layout()
plt.show()

如果你不想额外引入seaborn依赖,也可以用pandas自带的绘图能力实现:

# 先将长表转换为宽表格式
df_wide = df.pivot(index="log_date", columns="table_name", values="size_mb")

# 直接绘图
df_wide.plot(kind="line", figsize=(10,6), marker="o", linewidth=2)
plt.xlabel("日志记录日期", fontsize=12)
plt.ylabel("存储大小(MB)", fontsize=12)
plt.title("各表存储大小变化趋势", fontsize=14)
plt.xticks(rotation=45)
plt.legend(title="数据库表名")
plt.tight_layout()
plt.show()

注意:如果读取CSV后log_date列为字符串格式,需要先通过pd.to_datetime(df['log_date'])转换为时间类型,避免x轴显示异常。

内容的提问来源于stack exchange,提问作者halid.sert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:54:03