matplotlib - как построить гистограмму рядом, чтобы сравнить значения между двумя столбцами - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть набор данных определенных значений, разделенных на 2008 и 2013 годы. Однако, когда я строю их с помощью matplotlib, на столбчатой ​​диаграмме отображаются только значения 2008 года.

Я хотел бы иметь гистограмму 2008 и 2013 годов для сравнения.

Image of the data

До сих пор мне удавалось только произвести это Values of 2008, separated by flat_type

import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('C:\data/IT8701_CA2_Data/hdb-resident-population-by-flat-type.csv', 
                        skip_header=1, 
                        dtype=[('shs_year','U50'),('flat_type','U50'),('resident_population','i8')], delimiter=",",
                        missing_values=['na','-'],filling_values=[0])`
labels = list(set(data['flat_type']))
labels.sort()
residents = np.arange(0,len(labels))
residents_values = data[['flat_type','resident_population']]

values = residents_values['resident_population']

units_values = {}

for i in labels:
valuesforFY = values[residents_values['flat_type']==i] 
print("No.of Residents in Flat_type: " + i + " is {}".format(valuesforFY))
#the line below is critical
units_values[i] = valuesforFY

plt.figure(1, figsize=(8,8))
xdata =  list(units_values.keys())
ydata = [i[0] for i in units_values.values()]
barchart = plt.bar(xdata, ydata, color='b')

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Это использует панд, но должно дать вам то, что вам нужно, если вы хотите изменить структуру данных.

import pandas as pd

df = pd.DataFrame([['2008', '2008', '2013', '2013'],['a','b','a','b'], [3,7,5,6]]).T
df.columns = ['year', 'type', 'value']
df.set_index(['year', 'type'], inplace=True)

df.unstack().plot.bar()

enter image description here

0 голосов
/ 07 февраля 2019

Используйте групповые.Что-то вроде:

for group in df.groupby('year'):
   group.plot(...)
...