我正在尝试在Python中创建一个时间轴。然而,我从来没有这样做过,到目前为止,寻找答案对我没有太大帮助。基本上,我试图重新创建类似于下面张贴的图像的东西。有没有人可以提供任何相关的消息来源,这将有助于这一点?或者,有人知道如何编写类似于图像中显示的代码吗?
dl5txlt91#
下面是matplotlib annotate + text可以完成的操作:
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()
结果如下所示:
1条答案
按热度按时间dl5txlt91#
下面是matplotlib
annotate
+text
可以完成的操作:结果如下所示: