如何使用pandas绘制示例图中的四列数据图表 现有函数仅支持双变量
四列数据pandas可视化实现方案
pandas的绘图接口封装自matplotlib,原生支持多列数据同时绘制,无需局限于双变量传入,以下是不同场景的实现方式:
场景1:单X轴对应多Y列(折线/柱状/面积图等)
如果你的四列数据中1列为X轴维度,剩余3列为需要对比的Y值,直接将需要展示的Y列以列表形式传入y参数即可:
import pandas as pd import matplotlib.pyplot as plt # 构造四列示例数据,可替换为你自己的数据集 df = pd.DataFrame({ "时间列": range(1, 21), "指标A": [i*2 + pd.np.random.randint(-3,3) for i in range(20)], "指标B": [i*1.5 + pd.np.random.randint(-2,4) for i in range(20)], "指标C": [i + pd.np.random.randint(-5,2) for i in range(20)] }) # 多Y列同时绘制,kind可替换为bar/area等你需要的图表类型 df.plot(x="时间列", y=["指标A", "指标B", "指标C"], kind="line") plt.show()
场景2:多组X-Y对应关系(如散点图多系列)
如果需要绘制多组不同的X-Y映射的散点图,只需复用同一个轴对象(ax)多次调用plot方法即可:
# 第一组X-Y绘制,生成轴对象 ax = df.plot(kind="scatter", x="指标A", y="指标B", color="blue", label="A-B对应关系") # 后续组都传入已生成的ax参数,即可在同一张图叠加 df.plot(kind="scatter", x="指标A", y="指标C", color="red", label="A-C对应关系", ax=ax) plt.show()
场景3:双Y轴展示四列数据
如果四列数据量级差异较大,可以拆分双Y轴分别承载不同量级的序列,避免低量级数据被挤压:
fig, ax1 = plt.subplots() # 左侧Y轴绘制前两个序列 df.plot(x="时间列", y=["指标A", "指标B"], ax=ax1) ax1.set_ylabel("低量级指标单位") ax2 = ax1.twinx() # 右侧Y轴绘制剩余序列 df.plot(x="时间列", y=["指标C"], ax=ax2, color="orange") ax2.set_ylabel("高量级指标单位") plt.show()
内容的提问来源于stack exchange,提问作者Evening Mouse
相关产品推荐
相关产品推荐

