【问题标题】:Change matplotlib x-axis to include years only将 matplotlib x 轴更改为仅包含年份
【发布时间】:2021-06-17 00:18:36
【问题描述】:

我有以下熊猫数据框:

使用 Matplotlib 绘制折线图时,x 轴(日期)都被挤压在一起。如下图:

您知道如何做到这一点吗?我对此比较陌生,我使用的代码如下:

import matplotlib.pyplot as plt
plt.plot(df_temp['Mes'], df_temp['data science'], label='data science')
plt.plot(df_temp['Mes'], df_temp['machine learning'], label='machine learning')
plt.plot(df_temp['Mes'], df_temp['deep learning'], label='deep learning')
plt.xlabel('Date')
plt.ylabel('Popularity')
plt.title('Popularity of AI terms by date')
plt.grid(True)
plt.legend()

非常感谢

【问题讨论】:

  • 将我转换为日期时间。它被绘制为字符串

标签: python pandas matplotlib data-visualization


【解决方案1】:
ticks_data = [2004,2005,2006]
plt.xticks(ticks_data)

或者你也可以试试,

plt.xticklabels(ticks_data, fontsize=14)

这将用年份替换 x 轴,代替 ticks_data ,您可以添加使用您选择的列表,您可以从 pandas DataFrame 本身派生。

【讨论】:

    【解决方案2】:

    使用groupby 仅显示每年的平均受欢迎程度,
    然后使用reset_index() 将分组对象转换为新的数据框。

    new_dataframe = pd.DataFrame({'popularity': df.groupby(df['Mes'].dt.year)['a'].mean()}).reset_index()
    plt.plot(new_dataframe['Mes'], new_dataframe['popularity'], label='data science')
    plt.xlabel("Year")
    plt.ylabel("Popularity")
    

    【讨论】:

      【解决方案3】:

      将 Mes 转换为日期时间格式,它将处理年表(跨可视化包)并分配适当的 x-ticks 和间隔。 它没有具体回答你的问题,但我认为你需要整理你的情节。

      df_temp.Mes=pd.to_datetime(df_temp.Mes)
      

      【讨论】:

        猜你喜欢
        • 2021-08-15
        • 2016-03-19
        • 1970-01-01
        • 1970-01-01
        • 2021-11-05
        • 2023-03-16
        • 1970-01-01
        • 2021-09-14
        • 2019-09-09
        相关资源
        最近更新 更多