Python 根据日期范围(最小值和最大值)绘制多重折线图
我的df如下所示:Python 根据日期范围(最小值和最大值)绘制多重折线图,python,pandas,dataframe,matplotlib,charts,Python,Pandas,Dataframe,Matplotlib,Charts,我的df如下所示: DATE_MIN DATE_MAX 214 1994-06-29 2010-07-12 125 1969-10-26 2011-10-10 123 2013-07-02 2015-01-29 74 2006-01-05 2016-06-20 列为:日期\最小值、日期\最大值 我想画一个长的垂直图表,其中有尽可能多的水平线 行作为df行 日期范围在x轴上 索引位于y轴, 因此,每条线是水平的,它们不会相互交叉 因此,我想显示哪些行有一些时间重叠,因为这些行
DATE_MIN DATE_MAX
214 1994-06-29 2010-07-12
125 1969-10-26 2011-10-10
123 2013-07-02 2015-01-29
74 2006-01-05 2016-06-20
列为:日期\最小值、日期\最大值
我想画一个长的垂直图表,其中有尽可能多的水平线
行作为df行
- 日期范围在x轴上
- 索引位于y轴, 因此,每条线是水平的,它们不会相互交叉李>
超级感谢 如果您愿意制作甘特图并使用plotly,您可以使用此
将熊猫作为pd导入
从io导入StringIO
将plotly.figure\u工厂作为ff导入
txt=“”任务日期\u最小日期\u最大
214 1994-06-29 2010-07-12
125 1969-10-26 2011-10-10
123 2013-07-02 2015-01-29
74 2006-01-05 2016-06-20
"""
df=pd.read\u csv(StringIO(txt),delim\u whitespace=True)
数据=[]
对于i,df.iterrows()中的行:
data.append(dict(Task=str(第[“Task”]行)),
Start=str(行[“日期”]),
Finish=str(第[“日期”])行)
图=ff.创建甘特图(数据)
图2(图3)
感谢您迄今为止的快速回答。 事实上,我找到了一个很好的解决办法 因此,我的代码如下所示:
import matplotlib.pyplot as plt
import matplotlib.dates as dt
df = df.sort_values(by=['DATE_MIN', 'DATE_MAX'])
fig = plt.figure(figsize=(10, 50))
ax = fig.add_subplot(111)
ax = ax.xaxis_date()
ax = plt.hlines(df.ID,
dt.date2num(df.DATE_MIN),
dt.date2num(df.DATE_MAX))
你不是真的在要求甘特吗?@rpanai看来matplotlib中最接近的图表是“hlines”,它对我来说已经足够好了,谢谢这能回答你的问题吗?谢谢你,我想在没有更多外部lib的情况下完成。在这种情况下,你应该将你的问题标记为重复。