如何使用 Pandas Dataframe 和 matplotlib 创建历史时间线

数据挖掘 Python 时间序列 熊猫 matplotlib
2022-02-14 22:17:09

所以我在这里看到了一些有帮助的答案,但是我的数据集比之前回答的要大。为了了解我正在使用的内容,这里是完整数据集的链接我使用 pandas 将其导入到 jupyter 笔记本中。我已经包含了一个尝试解决方案的图片,可以在此链接中找到,就在这里: 示例图片问题是 1. 这很难阅读 2. 我不知道如何把它弄平,使它看起来像一个传统的时间线。当我尝试处理更大的片段时,这个问题变得更加明显,比如这个:它基本上是不可读的。这是我用来生成这两者的代码(我只是修改了包含的代码,以更改使用了整个数据集的哪个部分)。

event = Xia['EnglishName']
begin = Xia['Start']
end = Xia['Finish']
length = Xia['Length']

plt.figure(figsize=(12,6))
plt.barh(range(len(begin)), (end-begin), .3, left=begin)
plt.tick_params(axis='both', which='major', labelsize=15)
plt.tick_params(axis='both', which='minor', labelsize=20)
plt.title('Xia Dynasty', fontsize = '25')
plt.xlabel('Year', fontsize = '20')
plt.yticks(range(len(begin)), "")
plt.xlim(-2250, -1750)
plt.ylim(-1,18)
for i in range(18):
    plt.text(begin.iloc[i] + length.iloc[i]/2, i+.25, event.iloc[i], ha='center', fontsize = '12') 

此代码半有效,但我希望条形更靠近或颜色不同并且都在相同的 y 值上。我感谢任何和所有的帮助。我已经尝试解决这个问题大约两个星期了,并且正在碰壁。

1个回答

这么晚才回复很抱歉。我不知道下面的情节是否足以满足您的需求。阴谋

如果是的话,你可能会喜欢matplotlib.hlines我提供了一个示例代码来生成类似上面的图片。

import matplotlib.pyplot as plt
import random

for x in range(0, 10, 2):
    color = random.choice(['red', 'green', 'blue', 'yellow'])
    plt.hlines(1, x, x + 2, colors=color, lw=5)
    plt.text(x + 1, 1.01, color, ha='center')
plt.show()

让我知道这是否有帮助!