【问题标题】:Add padding to time axis in matplotlib在 matplotlib 中为时间轴添加填充
【发布时间】:2023-03-18 03:38:01
【问题描述】:

我在 python 的 matplotlib 中创建了一个散点图,其中 x 轴是日期,y 轴是时间。我想在我的 y 轴上添加一些填充,这样这些点就不会在顶部和底部被切断。我听说将ax.ylim([x,y]) 设置为比最小值小一点,比最大值大一点,但这在时间上是不可能的,因为没有负时间或 25:00 这样的东西。

这就是图像现在的样子:

如你所见,顶部和底部的点被切断了。

任何帮助将不胜感激!

【问题讨论】:

  • 您可以自己编写标签,这样就可以满足您的要求,但这不会让您的情节变得不那么拥挤,恰恰相反(如果您给一个垫子,那么就会少情节的空间)。你还想要这个解决方案吗?
  • @armatita 对不起,我说错了,我不担心可视化会拥挤,我只是不想在图像的顶部和底部截断点。
  • 你试过left-pad吗? j/k

标签: python matplotlib


【解决方案1】:

这里是你如何编写你的标签而不(并且增加数据限制)冒着在那里有愚蠢值的风险:

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randint(2004,2017,500)
y =np.clip(np.random.normal(13,7,500),0,24)

plt.scatter(x,y)
plt.xticks(range(2004,2017,3),[str(i) for i in range(2004,2017,3)],rotation=45)
plt.yticks(range(0,24,3),[str(i)+':00' for i in range(0,24,3)])

plt.xlim(2002,2019)
plt.ylim(-3,28)
plt.show()

,结果是:

【讨论】:

  • 感谢您的回复!使用您的方法间距有效,但随后我的值消失了。可能是因为我使用 datetime.datetime 类作为我的值吗? date = datetime.datetime(int(date[0:4]), int(date[5:7]), int(date[8:10])) dateList.append(date) timeThing = datetime.datetime(2016,1,1,hour,minute) timeList.append(timeThing) plt.scatter(dateList, timeList, c='r' ) plt.yticks(range(0,24,3),[str(i)+':00' for i in range(0,24,3)]) plt.ylim(-3,28)
  • @ConnerLeverett 可能。在您使用range(0,24,3) 定义yticks 的行中,尝试放置可迭代的日期而不是范围。还将您的代码(包括导入)放入问题中。很难在评论中阅读它。
猜你喜欢
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
相关资源
最近更新 更多