【问题标题】:How to adjust x ticks to string values in Python如何在 Python 中将 x 刻度调整为字符串值
【发布时间】:2019-05-17 05:23:16
【问题描述】:

我在 Python 上绘制一个非常简单的时间序列图时遇到问题。我一直在玩 Twitter 数据,我的 x 是日期和时间,而我的 y 是我根据推文计算的一些分数。明显的问题是我的 x 不断扩展到 x 轴在绘制时并不代表我的数据集中 x 的所有值。可以肯定的是,我对此完全没有意见,但我想要的是 x 轴至少从我的数据集中的第一个 x 值开始并以最后一个 x 值结束,以便我可以评估演变近乎实时的分数。这至少会创建一个图表,我们可以在其中看到自从我开始收集推文以来,我计算的分数已经演变了多少,直到我绘制有问题的分数的最近一天。这是我到目前为止的代码:

n = datetime.date.today().strftime("%B %d, %Y") #Here I'm registering today's date

a_plot=df_US.plot(x='Some timeframe', y='Some Score')
a_plot

plt.xticks(rotation=60)
plt.ylabel('Some Score')
plt.title('Evolution of Some Score in Tweets',fontdict=None, loc='center')
plt.savefig('Some Score('+n+').png', dpi=300, bbox_inches = 'tight')
plt.show()

这就是我根据这个脚本得到的。 Some Time Series Plot

x 轴从它所在的位置开始我很好,只是我希望它以数据集中 x 的最新值结束。我也很好,两者之间的蜱虫较少。

我在网上搜索了这个问题的答案,但不幸的是,我只能找到整数值或有限数量字符串的答案。任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas matplotlib plot time-series


    【解决方案1】:

    Iiuc,你可以试试下面的函数,它计算给定数组的第一个和最后一个之间的 n 个等距日期时间:

    import datetime
    
    def custom_ticks(timings, n):
        dt = (timings[-1] - timings[0]).days +1
        return [timings[0]+i*datetime.timedelta(dt/(n-1)) for i in range(n)]
    

    然后在绘制数据框后,您可以使用此函数来定义您的自定义刻度:

    plt.xticks(custom_ticks(df_US['Some timeframe'], 5))
    

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 2016-12-30
      • 2017-09-26
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 2020-05-29
      相关资源
      最近更新 更多