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
相关产品推荐
相关产品推荐

