Matplotlib如何在同一X轴上绘制线图和柱状图

3
当我将两个pandas数据框绘制为两个折线图时,它们会正确地在同一x轴上显示。然而,当我将一个数据框绘制为条形图时,轴似乎被偏移了。
ax = names_df.loc[:, name].plot(color='black')
living_df.loc[:, name].plot(figsize=(12, 8), ax=ax)

这个操作能够正常工作,生成以下结果:

result

另一方面,以下操作:

ax = names_df.loc[:, name].plot(color='black')
living_df.loc[:, name].plot.bar(figsize=(12, 8), ax=ax)

不会,这是结果。

结果.


pandas 条形图是分类的。条形图位于位置0、1、2……N-1。您可以使用 matplotlib 条形图在数值位置上获取条形图。 - ImportanceOfBeingErnest
1个回答

1

使用matplotlib代替调用pandas对象的plot方法:

import matplotlib.pyplot as plt

# Line plot
plt.plot(names_df.loc[:, name], color='black')
plt.plot(living_df.loc[:, name])
plt.show()
plt.close()

# Bar plot
plt.plot(names_df.loc[:, name].values)
bar_data = living_df.loc[:, name].values
plt.bar(range(len(bar_data)), bar_data)
plt.xticks(range(len(bar_data)), names_df.index.values)  # Restore xticks
plt.show()
plt.close()

2
我建议使用 pandas.DataFrame.values 而不是 list()values 属性将返回 DataFrame 内容的 NumPy 数组。 - William Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接