使用pandas和matplotlib绘制叠加图(折线图和条形图)

时间:2020-01-04 18:53:03

标签: python pandas matplotlib

我正在测试熊猫在同一张图表上绘制财务数据(价格和数量)的功能。如果我尝试将两个数据都呈现为线,则效果很好:

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

a = pd.date_range('2019-01-01', '2019-06-01',freq = 'D')
b = np.random.normal(size = len(a), loc = 50)
v = np.random.normal(size = len(a), loc = 1000)
c = pd.DataFrame(index = a, data = zip(b,v), columns = ['price', 'volume'])

fig, ax = plt.subplots(figsize = (15,8))
bx = ax.twinx()
c.price.plot.line(ax = ax, color = 'r')
c.volume.plot.line(ax = bx,  color = 'g', alpha = .2)
plt.show()

这给出: enter image description here

但是,如果我尝试通过将最后三行替换为:

,将其中一条渲染为一条线,将另一条渲染为条形图
c.price.plot.line(ax = ax, color = 'r')
c.volume.plot.bar(ax = bx,  color = 'g', alpha = .2)
plt.show()

这给出了错误的结果: enter image description here

有人知道如何使上述代码与line + bar一起使用吗?

1 个答案:

答案 0 :(得分:3)

使用 Matplotlib 绘图库。

Matplotlib的功能pyplot具有功能 bar plot 。您可以使用它们在同一图表上显示数据。

Example