我在使用 Python 绘制非常简单的时间序列图时遇到问题。我一直在研究 Twitter 数据,我的 x 是天数和时间,而我的 y 是我根据推文计算的分数。明显的问题是,我的 x 不断扩展,以至于绘制时 x 轴并不代表数据集中 x 的所有值。当然,我完全同意这一点,但我想要的是 x 轴至少从数据集中的第一个 x 值开始并以最后一个 x 值结束,以便我可以评估演变近实时的分数。这至少会创建一个图表,我们可以在其中看到 self 开始收集推文以来我正在计算的分数已经演变了多少,直到我绘制相关分数的最后一天。这是我到目前为止的代码:
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 的最新值结束。我也很满意中间的蜱虫较少。
我在网上搜索了这个问题的答案,但不幸的是我只找到了整数值或有限数量的字符串的答案。任何帮助将不胜感激!
最佳答案
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))
关于python - 如何在 Python 中将 x 刻度调整为字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805135/