如何对使用 Python matplotlib 编写的历史时间线进行排序?

How to sort a historical timeline written with Python matplotlib?

为了显示一个非常简单的古代历史时间轴(灵感来自 Wolfram Alpha 时间轴),我稍微修改了 python 在 S.O 上找到的一个小程序。 () :

import matplotlib.pyplot as plt
import numpy as np

event = np.array(['Antiquity','Egypt','W.R.Empire','E.R.Empire','Writing','C.Colomb','Middle Ages'])
begin = np.array([-3400,-3150,285,330,-3400,1492,476])
end = np.array([476,30,476,1453,-3300,1493,1492])

plt.barh(range(len(begin)), end-begin, left=begin, align='center')

plt.yticks(range(len(begin)), event)

plt.show()

如何按开始日期对时间线进行排序(升序)? 原因是我希望在数据到来时输入数据(Minoans、Elam 等...),而不必每次都重新排列数组,这会很乏味。

这不是作业。我只是一个 Python 新手,我不知道如何回答我自己的问题…

您可能想要对值进行排序。

import matplotlib.pyplot as plt
import numpy as np

event = np.array(['Antiquity','Egypt','W.R.Empire','E.R.Empire','Writing','Middle Ages'])
begin = np.array([-3400,-3150,285,330,-3400,476])
end = np.array([476,30,476,1453,-3300,1493])

beg_sort = np.sort(begin)
end_sort = end[np.argsort(begin)]
evt_sort = event[np.argsort(begin)]

plt.barh(range(len(beg_sort)), end_sort-beg_sort, left=beg_sort, align='center')

plt.yticks(range(len(beg_sort)), evt_sort)

plt.show()