【问题标题】:matplotlib plot line and bar chart together on same x-axismatplotlib 在同一 x 轴上同时绘制折线图和条形图
【发布时间】:2020-05-06 00:33:12
【问题描述】:

当我将两个 pandas dfs 一起绘制为两个折线图时,我将它们正确地放在同一个 x 轴上。但是,当我将其绘制为条形图时,轴似乎发生了偏移。

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

这工作正常,产生这个结果

另一方面,这个:

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

没有,但有这个结果

.

【问题讨论】:

  • 熊猫条形图是分类的。条形图位于位置 0,1,2...N-1。您可以使用 matplotlib 条形图在数字位置获取条形图。

标签: python pandas matplotlib


【解决方案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()

【讨论】:

  • 我建议使用pandas.DataFrame.values 而不是list()values 属性会将DataFrame 的内容作为一个numpy 数组给出
猜你喜欢
  • 2015-09-01
  • 2016-10-09
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 2021-11-01
相关资源
最近更新 更多