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

