python - 如何在 Python 中将 x 刻度调整为字符串值

标签 python pandas matplotlib plot time-series

我在使用 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/

相关文章:

python - 更智能的数据收集方式或数据排序方式

python - 矢量化迭代Python循环: c[i] = a[i] + b[i] * c[i-1]

python - Pandas:如何在不循环的情况下使用带有数据帧参数的 applymap/apply 函数

python - basemap 导入错误: No module named 'mpl_toolkits.basemap'

python - 我怎样才能杀死 python matplotlib 脚本?

python - 使用 python wand 对图像进行灰度化

python pandas upper() 不适用于字符串列

python - 将 Pandas DataFrame 转换为嵌套元组列表的快速方法

python - 围绕 matplotlib 线绘制边框

python - pyserial - 如何读取从串行设备发送的最后一行