【问题标题】:multi colored rel or line plot in seabornseaborn中的多色rel或线图
【发布时间】:2021-10-27 18:13:34
【问题描述】:

我是下面的数据框,我有唯一的compIds,它可以有多个capei 和多个date。这主要是一个时间序列数据集。

    date     capei     compId
0   200401  25.123777   31946.0
1   200401  15.844910   29586.0
2   200401  20.524131   32507.0
3   200401  15.844910   29586.0
4   200401  15.844910   29586.0
... ... ... ...
73226   202011  9.372320    2817.0
73227   202011  9.372320    2817.0
73228   202011  22.334842   28581.0
73229   202011  10.761727   31946.0
73230   202011  30.205348   15029.0

使用以下可视化代码,我得到了图,但线图的颜色没有什么不同。我想要不同的颜色。

import seaborn as sns

a4_dims = (15, 5)

sns.set_palette("vlag")


**plot**
sns.set_style('ticks')
fig, ax = plt.subplots()

fig.set_size_inches(11.7, 8.27)

sns.relplot(x="date", ax=ax, y="capei",   style='compId', kind='line',data=fDf, palette=sns.color_palette("Spectral", as_cmap=True) )

它会生成这样的图像

但是我期待情节像这样

图片生成图1中的compId可以相当于图2中的月份。 图2是here的截图。

如何在图 1 中为 compId 设置不同的颜色。

【问题讨论】:

    标签: python pandas matplotlib plot seaborn


    【解决方案1】:

    首先,您应该重新格式化您的数据框:

    • 'date'str 转换为datetime

      fDf['date'] = pd.to_datetime(fDf['date'], format='%Y%m')
      
    • 'compId'float 转换为str 以便用作分类轴(1)

      fDf['compId'] = fDf['compId'].apply(str)
      

    现在您可以将'compId' 作为hue 和/或style 参数传递给seaborn.relplot,具体取决于您的偏好。

    完整代码

    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    
    fDf = pd.read_csv(r'data/data.csv')
    fDf['date'] = pd.to_datetime(fDf['date'], format='%Y%m')
    fDf['compId'] = fDf['compId'].apply(str)
    
    
    sns.set_palette("vlag")
    sns.set_style('ticks')
    
    sns.relplot(x="date", y="capei", style='compId', hue='compId', kind='line',data=fDf, estimator=None)
    
    plt.show()
    

    (用假数据框绘制的图)


    这段话可能是必要的,也可能不是必要的;鉴于我建议的上下文。
    如果将compId 保留为数字类型,则图中的hue 将与'compId'value 成正比。这意味着0.4 的颜色将与31946.0 非常不同;但是 31946.032507.0 实际上无法通过颜色区分。
    如果您将compId 转换为str,那么hue 将不依赖于compId 数值,因此颜色将在类别之间等距

    fDf['compId'] as it is fDf['compId'].apply(str)

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2020-08-07
      • 1970-01-01
      • 2016-02-07
      • 2021-07-18
      • 2020-08-28
      • 2021-09-16
      • 1970-01-01
      相关资源
      最近更新 更多