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

使用ggplot风格时如何为Pandas折线图设置不同的线型?

ggplot风格Matplotlib折线图自定义线型方案

方案1:手动指定单条折线线型

pandas的plot.line()方法提供linestyle参数,直接在每次绘图时传入对应值即可区分不同折线,修改后参考代码如下:

import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('ggplot')

fig,ax = plt.subplots(figsize=(15,5))
ax.set_title('Loss curve', fontsize=15)
ax.set_ylabel('Loss')
ax.set_xlabel('Epoch')
# 第一条折线用默认实线
df1.plot.line(ax=ax,x='epoch',y=["train_loss"], linestyle='-', label='训练集1损失')
# 第二条折线用短虚线
df2.plot.line(ax=ax,x='epoch',y=["train_loss"], linestyle='--', label='训练集2损失')
plt.legend() # 显示图例配合线型更容易区分
plt.show()

常用线型对应参数值:

  • '-':实线(默认样式)
  • '--':短虚线
  • ':':点线
  • '-.':点划线
  • 支持自定义线型,例如传入(0, (5, 2))表示5像素实线+2像素空白的长虚线,传入(0, (3, 1, 1, 1))表示短点间隔的点划线。

方案2:设置全局自动循环线型

如果需要绘制的折线数量较多,可修改Matplotlib的全局样式循环规则,后续绘图无需手动指定参数就会自动切换线型,参考代码如下:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.cycler import cycler

plt.style.use('ggplot')
# 合并原有颜色循环和自定义线型循环,绘图时会同时按顺序切换颜色和线型
plt.rcParams['axes.prop_cycle'] = cycler(linestyle=['-', '--', ':', '-.', (0, (5, 2))]) + plt.rcParams['axes.prop_cycle']

fig,ax = plt.subplots(figsize=(15,5))
ax.set_title('Loss curve', fontsize=15)
ax.set_ylabel('Loss')
ax.set_xlabel('Epoch')
# 无需手动指定linestyle,自动按规则切换线型
df1.plot.line(ax=ax,x='epoch',y=["train_loss"], label='训练集1损失')
df2.plot.line(ax=ax,x='epoch',y=["train_loss"], label='训练集2损失')
# 新增更多折线也会自动适配
# df3.plot.line(ax=ax,x='epoch',y=["train_loss"], label='训练集3损失')
plt.legend()
plt.show()

当前默认绘制效果参考:
折线图绘制效果示意图

内容的提问来源于stack exchange,提问作者Dametime

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:00