我想画一张条形图,上面列出了加入和离开一支音乐乐队的乐队成员. 我设法画了一个我想要的网格,但我坚持为乐队成员画线条,因为他们在重复. 当乐队成员是唯一的,但日期列重复时,我知道如何创建,F.E.:Year_Start1、Year_End1、Year_START2、Year_End2等. 但当乐队成员在复制时,他们就会被困住. 因此,每个人应该在y轴上只出现一次,并带有一组断条(如果一个人加入乐队不止一次). 我感谢任何人的帮助!
代码示例:
import matplotlib.pyplot as plt
import pandas as pd
result = pd.DataFrame([['Bill', 1972, 1974],
['Bill', 1976, 1978],
['Bill', 1967, 1971],
['Danny', 1969, 1975],
['Danny', 1976, 1977],
['James', 1971, 1972],
['Marshall', 1967, 1975]],
columns=['Person', 'Year_start', 'Year_left'])
print(result)
fig, ax = plt.subplots()
persons = result.Person.unique()
person_count = len(persons)
ybound = len(persons)*10
ystep = int(ybound/person_count)
numbers = range(5, ybound, ystep)
ax.set_ylim(0, ybound)
ax.set_xlim(min(result.Year_start)-1, max(result.Year_left)+1)
ax.set_xlabel('Years')
ax.set_yticks(numbers, labels=persons)
ax.grid(True)
plt.show()
我想我应该使用"for"循环并将数据帧放入"Zip"中,但不确定具体如何操作.