【问题标题】:Too much space between bars in matplotlib bar chartmatplotlib条形图中条形之间的空间太大
【发布时间】:2017-03-29 13:19:45
【问题描述】:

我正在尝试使用 matplotlib 创建条形图。

x 轴数据是一个带有年份的列表:[1950,1960,1970,1980,1990,1995-2015]

y 轴数据是一个列表,其数量与年份相同。

这是我的代码:

import csv
import matplotlib.pyplot as plt

path = "bevoelkerung_entwicklung.csv"



with open(path, 'r') as datei:
    reader = csv.reader(datei, delimiter=';')
    jahr = next(reader)
    population = next(reader)

population_list = []

for p in population:
    population_list.append(str(p).replace("'",""))

population_list = list(map(int, population_list))
jahr = list(map(int, jahr))

datei.close()

plt.bar(jahr,population_list, color='c')

plt.xlabel('Year')
plt.ylabel('Population in 1000')
plt.title('Population growth')
plt.legend()
plt.show()

结果如下: Too much space between bars

正如您所见,1950 年至 1960 年之间的差距是巨大的。我怎样才能做到这一点,以便在 1950-1995 年的酒吧之间没有间隙。我知道它有 10 年的间隔,但看起来不太好。

任何帮助都将不胜感激。

【问题讨论】:

  • 所以你想根据 x 间距调整条的宽度吗?在这种情况下,您的条形将不再以真实数据点为中心
  • 我认为有 26 个条目。我想有 26 个酒吧,它们之间的空间相等。这就是我想要实现的目标。

标签: python matplotlib charts


【解决方案1】:

您需要将人口数据绘制为整数递增的函数。这使得条具有相等的间距。然后,您可以将标签调整为每个图表所代表的年份。

import matplotlib.pyplot as plt
import numpy as np

jahre = np.append(np.arange(1950,2000,10), np.arange(1995,2017))
bevoelkerung = np.cumsum(np.ones_like(jahre))
x = np.arange(len(jahre))

plt.bar(x, bevoelkerung)
plt.xticks(x, jahre, rotation=90)
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2013-12-25
    • 2023-04-04
    • 2020-12-02
    • 2018-05-06
    相关资源
    最近更新 更多