如何使matplotlib plot中的行继续超过xaxis限制(python)

2024-04-27 16:06:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是绘制代表一年中某些日子的线条。注意:我不想使用像date-time这样的包,我只是想把数据点作为整数值。因此,在下图中,y=3的事件持续时间为123天至189天,y=2的事件持续时间为214天至365天

我遇到的问题是y=1的事件,它应该从第205天到第22天(这就是data数据帧中的内容)。但是,绘图不知道我正在绘制一年中的几天(显然),因此它从第0天延伸到第205天,这是错误的。相反,它应该从205开始,向右拉伸,然后在值22处结束。我已经用蓝色手绘了它应该是什么样子

example figure

帮忙

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame(np.array([[3,123,189],[2,214,365],[1,205,22]]), columns=['name','start','end'])
plt.hlines(data['name'],data['start'],data['end'],linewidth=1)
plt.xlabel('Date')
plt.ylabel('Event')

Tags: 数据nameimport目标dataasnp绘制
1条回答
网友
1楼 · 发布于 2024-04-27 16:06:40

这个怎么样

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame(np.array([[3,123,189],[2,214,365],[1,205,22]]), columns=['name','start','end'])

endstart = (data.index[data['start'] > data['end']].tolist())
startend = ([i for i in range(len(data)) if i not in endstart])

fig, ax = plt.subplots()

# plot startend
ax.hlines(data['name'][startend],data['start'][startend],data['end'][startend],linewidth=1)
# plot endstart
ax.hlines(data['name'][endstart],data['start'][endstart],365,linewidth=1)
ax.hlines(data['name'][endstart],0,data['end'][endstart],linewidth=1)

ax.set_xlabel('Date')
ax.set_ylabel('Event')

输出:

enter image description here

相关问题 更多 >