这是一个分为两部分的问题。我有一组按日期时间索引索引的数据:
DateTime, ClosedPL, MaxClosedDraw, Max, MaxDrawPerPeriod
1/6/2012 10:52, -7350, -20643, 0, 0
1/6/2012 12:00, 0, -20643, 0, 0
1/6/2012 14:09, 0, -20643, 0, 0
1/6/2012 14:29, 0, -20643, 0, 0
1/6/2012 14:30, 0, -20643, 0, -20643
1/8/2012 18:00, 0, 0, 882, 0
1/9/2012 8:59, 0, -924, 882, 0
1/9/2012 9:00, 0, -1155, 882, 0
1/9/2012 10:00, 0, -3423, 882, 0
1/9/2012 11:03, 0, -3549, 882, 0
1/9/2012 12:10, 0, -3549, 882, 0
1/9/2012 13:27, 0, -3549, 882, 0
1/9/2012 14:17, 3250, -3549, 882, -3549
1/9/2012 14:26, 0, 0, 1218, 0
1/9/2012 14:29, -1254, -3318, 1218, 0
1/9/2012 14:30, 0, -3318, 1218, 0
1/9/2012 18:02, 0, -3654, 1218, -3654
1/10/2012 8:22, 1244, 0, 6426, 0
1/10/2012 9:00, 0, -1869, 6426, 0
1/10/2012 9:37, 0, -2856, 6426, 0
1/10/2012 10:00, 0, -3276, 6426, 0
我试图在同一张图上创建两个图-1条折线图,显示了closedPL和由条形图表示的MaxDrawPerPeriod之一。 X轴将是日期时间索引。我希望条形图沿着图形的底部运行,但高度限制,以免真正干扰线形图。因此,第1部分将是如何添加到图表中,而第2部分如下:
stats_df.plot(kind='line', y='ClosedPL_Accum')
stats_df.plot(kind='bar', y='MaxDrawPerPeriod')
plt.show()
答案 0 :(得分:1)
您正在创建的条形数量与数据框中的线条数量一样多。每个标签都有自己的标签,因此总的来说变得不可读。对于您要寻找的绘图类型,将需要使用matplotlib。如果尚未将索引转换为日期时间,则需要将其转换为bar
。然后创建一个双轴axtwin = ax.twinx()
,并为其绘制线图。或相反亦然。
import matlotlib.pyplot as plt
fig, ax = plt.subplots()
ax.bar(df.index, df['MaxDrawPerPeriod'])
axtwin = ax.twinx()
axtwin.plot(df.index, df['ClosedPL_Accum'])
ax.set_ylim(...) # you need to set the limits to the numbers you need
axtwin.set_ylim(...)
plt.show()