【问题标题】:Increase the distance between xticks增加 xticks 之间的距离
【发布时间】:2024-05-16 04:35:02
【问题描述】:

我有一个包含 60 个日期和值的数据集,我想将其可视化为散点图。

然而,个人之间的间隔非常小,导致日期重叠。我尝试旋转它们,但这并没有真正解决我的问题。我也不想改变字体大小,也不能省略一些标签。我基本上想增加每个标签之间的距离,同时保持它们与实际刻度对齐(换句话说:我想增加刻度之间的距离)

我尝试过this,但它对我不起作用。

day = df["day"].tolist() #a series of dates YYYY-MM-DD (not necessarily consecutive)
median = df[" median"].tolist() #some integers

x = range(len(day))

fig, ax = plt.subplots()
ax.scatter(x,median, color='blue')
plt.xticks(x, day, rotation=45, fontsize=10)
ax.set_ylim(ymin=0)

【问题讨论】:

  • 你能展示一下它现在的样子吗?
  • @NealTitusThomas 完成!
  • 刻度标签之间的间距由轴上刻度之间的间距决定。做你想做的事情的唯一方法是让轴变大。
  • 这些“日期”是否存储为datetime64s 或strings?猜测它们是字符串,所以 matplotlib 不知道如何处理它们。查看to_datetime

标签: python matplotlib data-visualization


【解决方案1】:

您可能希望在不更改字体大小和刻度数的情况下增加绘图的宽度以很好地适应所有标签。

尝试使用plt.figure(figsize=(width, height)) 来获得适合您需求的宽度。

更多信息在这里:https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.figure.html

另外,尝试不使用子图:

plt.figure(figsize=(width, height))
plt.scatter(x, median, c='blue')
plt.xticks(x, day, rotation=45, fontsize=10)
plt.ylim(bottom=0)
plt.show()

【讨论】:

  • 我已经尝试增加宽度,但是由于某种原因这会导致空白图像。
  • 这是另一个问题。按照答案的最后一个版本中的建议,尝试不使用子图。请告诉我进展如何。
  • 另外,如果您可以打印出daymedian,我可以尝试在我的机器上绘制并显示结果。