matplotlib 如何创建简单的时间轴图

g2ieeal7  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(144)

我正在尝试在Python中创建一个时间轴。然而,我从来没有这样做过,到目前为止,寻找答案对我没有太大帮助。
基本上,我试图重新创建类似于下面张贴的图像的东西。
有没有人可以提供任何相关的消息来源,这将有助于这一点?或者,有人知道如何编写类似于图像中显示的代码吗?

dl5txlt9

dl5txlt91#

下面是matplotlib annotate + text可以完成的操作:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(7, 3))
ax = fig.add_subplot()

xvalues = [0, 1, 2, 3, 4, 5]
xlabels = [r'$t_0 = 2019$', r'$t_0 = 2023$', r'$t_0 = 2048$', r'$t_0 = 2059$', r'$t_0 = 2060$', r'$t_0 = 2066$']
tickheight = 0.1

ax.annotate("", (4, 1), (5, 1), arrowprops={'arrowstyle':'<-', 'shrinkA': 0, 'shrinkB': 0})
ax.plot([4, 4], [1 - tickheight, 1 + tickheight], c='k', lw=1)
ax.plot([5, 5], [1 - tickheight, 1 + tickheight], c='k', lw=1)
ax.text(4.5, 1.1, 'outflow', ha='center', va='baseline')

ax.annotate("", (2, 2), (4, 2), arrowprops={'arrowstyle':'<-', 'shrinkA': 0, 'shrinkB': 0})
ax.plot([2, 2], [2 - tickheight, 2 + tickheight], c='k', lw=1)
ax.plot([4, 4], [2 - tickheight, 2 + tickheight], c='k', lw=1)
ax.text(3, 2.1, 'cancelling', ha='center', va='baseline')

ax.annotate("", (1, 3), (3, 3), arrowprops={'arrowstyle':'<-', 'shrinkA': 0, 'shrinkB': 0})
ax.plot([1, 1], [3 - tickheight, 3 + tickheight], c='k', lw=1)
ax.plot([3, 3], [3 - tickheight, 3 + tickheight], c='k', lw=1)
ax.text(2, 3.1, 'inflow', ha='center', va='baseline')

ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['right'].set_visible(False)

ax.set_xticks(xvalues)
ax.set_xticklabels(xlabels)

plt.xlim(-0.1, 5.1)
plt.ylim(0, 3.5)

plt.yticks([])

plt.tight_layout()

plt.show()

结果如下所示:

相关问题