【问题标题】:Plot with seaborn, not show all in x axis用 seaborn 绘图,不在 x 轴上显示全部
【发布时间】:2020-09-25 03:11:30
【问题描述】:

我用 seaborn 做了一个图,但我需要 x 轴每 3 天显示一次日期(因为我原来的 df 有超过 1000 个寄存器),但只是出于审美原因,因为它在图中很重要线显示所有寄存器(仅修改 x-ticks)。

这是一个df

import matplotlib.pyplot as plt
data = {'Sales':  [10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
        'Date': ['2020-03-03', '2020-03-04','2020-03-05','2020-03-06','2020-03-07', '2020-03-08','2020-03-09','2020-03-10','2020-03-11', '2020-03-12','2020-03-13','2020-03-14','2020-03-15', '2020-03-16','2020-03-17','2020-03-18']}
df = pd.DataFrame (data, columns = ['Date','Sales'])
plt.figure(figsize=(16,10))

chart = sns.lineplot(data=df,x='Date',y='Sales',palette='Set1')

plt = plt.xticks(rotation=45,horizontalalignment='right',fontweight='light')

我需要这样的东西:

非常感谢!!

【问题讨论】:

    标签: python matplotlib plot seaborn


    【解决方案1】:

    您可以使用 matplotlib 的日期定位器和格式化程序来执行几乎所有可以想象的时间线样式/定位 - 请参阅 docs

    在您的情况下,我们可以使用日期定位器并将间隔设置为 3 天。您也必须导入 matplotlib.dates。

    import matplotlib.dates as mdates.
    

    现在在plt.show()之前添加这个:

    locator = mdates.DayLocator(interval=3)
    chart.xaxis.set_major_locator(locator)
    

    总之就是这个样子

    import matplotlib.pyplot as plt
    import seaborn as sns
    import matplotlib.dates as mdates
    
    ata = {'Sales':  [10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
            'Date': ['2020-03-03', '2020-03-04','2020-03-05','2020-03-06','2020-03-07', '2020-03-08','2020-03-09','2020-03-10','2020-03-11', '2020-03-12','2020-03-13','2020-03-14','2020-03-15', '2020-03-16','2020-03-17','2020-03-18']}
    df = pd.DataFrame (data, columns = ['Date','Sales'])
    plt.figure(figsize=(16,10))
    
    chart = sns.lineplot(data=df,x='Date',y='Sales',palette='Set1')
    
    plt.xticks(rotation=45,horizontalalignment='right',fontweight='light')
    
    locator = mdates.DayLocator(interval=3)
    chart.xaxis.set_major_locator(locator)
    
    plt.show()
    

    【讨论】:

      【解决方案2】:

      你只能取偶数行,应该够了:

      import matplotlib.pyplot as plt
      import seaborn as sns
      
      data = {'Sales':  [10,30,20,55,78,90,22,42,53,14,11,31,32,21,20,42],
              'Date': ['2020-03-03', '2020-03-04','2020-03-05','2020-03-06','2020-03-07', '2020-03-08','2020-03-09','2020-03-10','2020-03-11', '2020-03-12','2020-03-13','2020-03-14','2020-03-15', '2020-03-16','2020-03-17','2020-03-18']}
      df = pd.DataFrame (data, columns = ['Date','Sales'])
      plt.figure(figsize=(16,10))
      
      chart = sns.lineplot(data=df,x='Date',y='Sales',palette='Set1')
      
      plt.xticks(
          df['Date'].iloc[::2], # Odd rows only
          rotation=45,
          horizontalalignment='right',
          fontweight='light'
      )
      plt.plot()
      

      【讨论】:

        猜你喜欢
        • 2021-09-27
        • 2018-03-24
        • 2018-03-12
        • 1970-01-01
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        相关资源
        最近更新 更多