【问题标题】:Formatting time series axis in Seaborn在 Seaborn 中格式化时间序列轴
【发布时间】:2020-08-12 10:27:50
【问题描述】:

我正在学习 Seaborn,并试图弄清楚如何为一年中的日期格式化 X 轴,以便它可读。假设我们有一个数据框,其中包含全年每一天的天气测量数据(365 行)。

sns.scatterplot(x = df_weather["DATE"], y = df_weather["MAX_TEMPERATURE_C"], color = 'red')
sns.scatterplot(x = df_weather["DATE"], y = df_weather["MIN_TEMPERATURE_C"], color = 'blue')
plt.show()

如何确保 X 轴标签可读?理想情况下,每月一个标签就可以了。

谢谢!

【问题讨论】:

    标签: python time-series seaborn


    【解决方案1】:

    不太确定您的列日期是什么样的,但也许可以尝试下面的方法,首先生成一些数据,我将日期作为字符串,我猜这与您的类似:

    import matplotlib.pyplot as plt
    import pandas as pd
    import seaborn as sns
    
    DATE = pd.date_range('2020-01-01', periods=365, freq='D').strftime('%y%y-%m-%d')
    MIN = np.random.uniform(low=10,high=25,size = len(index))
    MAX = MIN + np.random.uniform(low=5,high=10,size =len(index))
    df = pd.DataFrame({'DATE':DATE,'MIN':MIN,'MAX':MAX})
    

    像使用 sns 一样绘制:

    fig, ax = plt.subplots(figsize = (10,4))
    
    ax = sns.scatterplot(x = "DATE", y = "MAX",data=df, color = 'red')
    ax = sns.scatterplot(x = "DATE", y = "MIN",data=df, color = 'blue')
    

    现在我们定义第 mths 的开始来定义刻度:

    mths = pd.date_range('2020-01-01', periods=12, freq='MS')
    
    ax.set_xticks(mths.strftime('%y%y-%m-%d'))
    ax.set(xticklabels=mths.strftime('%b'))
    plt.show()
    

    看起来应该没问题:

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2020-12-21
      • 2020-08-15
      • 1970-01-01
      相关资源
      最近更新 更多