我有两个数据帧,一个包含另一个的样本子集。
df = pd.DataFrame(data= {'A' : [1,2,3,4,3,2,1]}
,index = [1,2,3,4,5,6,7])
df2 = pd.DataFrame(data = {'B' : [0.7, 1.4]}
,index = [2,6])
我想绘制这些图,使得完整的数据集是线图,而另一个是条形图。
但是尝试
ax = df.plot()
df2.plot(kind='bar', ax=ax)
给我
我错过了什么?
修改
我刚发现这件作品
plt.plot(df.index, df['A'])
plt.bar(df2.index, df2['B'])
我应该阅读哪些功能差异/基本原理?
答案 0 :(得分:1)
你应该按照以下方式进行。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.style.use('ggplot')
df = pd.DataFrame(data= {'A' : [1,2,3,4,3,2,1]}
,index = [1,2,3,4,5,6,7])
df2 = pd.DataFrame(data = {'B' : [0.7, 1.4]}
,index = [2,6])
df_final = pd.concat([df,df2], axis=2)
plt.figure()
ax = df_final['A'].plot(kind='line', color='y', legend='A')
df_final['B'].plot(kind='bar', color='r', legend='B')
plt.show()
在上一个方法中,您会错过以下几点:
当您想要在同一图中和同一组轴上同时绘制不同的数据帧时,始终将它们对齐。
已编辑: 我稍后在你的问题中看到了编辑,因此添加了这个。
您编辑的一个有效,因为现在您不使用Pandas包装并直接使用matplotlib。 Pandas plot()
只是matplotlib的一个包装器。在这种情况下,matplotlib不做任何假设,因为它没有特别注意数据集,只是将列值与适当的索引对齐。但是,我建议将Pandas用于涉及数据集的重要绘图应用程序。
见Pandas documentation on visualization