来自大熊猫数据帧的两个图,同一图上有不同的垂直轴

时间:2016-07-17 22:12:34

标签: python pandas matplotlib

我试图使用来自pandas数据帧的数据在python中绘制线图和条形图。我设法在绘图上获得两个轴,图例显示两个条目,但第一个图不存在。

这是我的代码:

import matplotlib.pyplot as plt
import pandas as pd

ax1 = data[["timestamp", "polarity"]].plot(x="timestamp", kind="bar")
ax1.set_xticks(data["timestamp"].values)
ax1.set_ylabel("polarity")
ax1.set_xlabel("year")

ax2 = ax1.twinx()
data[["timestamp", "revenue"]].plot(x="timestamp", linestyle="-", marker="o", ax=ax2)
ax2.set_ylabel("revenue")

plt.show()

这是我得到的情节:

plot

当我颠倒我绘制的顺序时,我得到以下情节:

plot 2

如何让这些情节出现在同一个数字上?

提前感谢!

1 个答案:

答案 0 :(得分:1)

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

x = pd.date_range(start='2016-07-15',periods=50,freq='D')
y1 = np.sin(np.linspace(0,50))
y2 = np.cos(np.linspace(0,0.3))
data = pd.DataFrame({'y1':y1,'y2':y2,'x':x})
data.set_index('x')

所以这是一个带有一堆点的数据框。

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.bar(data.index,data['y1'],color='w')   

ax2 = ax1.twinx()
ax2.plot(data.index,data['y2'],'k-')

fig.show()

这将为您提供一个条形图,其上有一条线,每条线在一个单独的y轴上但在同一个图上。 a bar graph with a line over it, with separate y axes