无法从plt.bar制作条形图

时间:2018-12-25 16:26:45

标签: python matplotlib bar-chart

我有一个作业,只允许使用matplotlib和基本的python。我无法生成所需的条形图。尽管anaconda已确定有问题的线路,但我无法理解。

数据源在这里:https://data.gov.sg/dataset/bookings-for-new-flats-annual?view_id=2cdedc08-ddf6-4e0b-b279-82fdc7e678ea&resource_id=666ed30a-8344-4213-9d2e-076eeafeddd3

已复制并复制了示例资源。

import numpy as np
import matplotlib.pyplot as plt  
fname = "C:\data/bookings-for-new-flats.csv"
data = np.genfromtxt('C:\data/bookings-for-new-flats.csv', 
                        skip_header=1, 
                        dtype=[('financial_year','U50'),('no_of_units','i8')], delimiter=",",
                        missing_values=['na','-'],filling_values=[0])

labels = list(set(data['financial_year']))
labels.sort()
bookings = np.arange(0,len(labels))
bookings_values = data[['financial_year','no_of_units']]

values = bookings_values['no_of_units']

units_values = {}

for i in labels:
    valuesforFY = values[bookings_values['financial_year']==i] 
    print("No.of Units in FY: " + i + " is {}".format(valuesforFY))
    #the line below is critical
    units_values[i] = valuesforFY    

barchart = plt.bar(list(units_values.keys()), list(units_values.values()), color='b')

plt.show()

期望出现一个条形图,但只收到一个空图。

系统将该行标识为有问题的--->

barchart = plt.bar(list(units_values.keys()), list(units_values.values()), color='b')

1 个答案:

答案 0 :(得分:0)

问题在于读取y数据(字典中的值),这些数据是封装在数组中的单个值,因此您将获得数组列表。

以下是解决方案:遍历值并仅存储可以使用索引0作为myCircles访问的数据。在这里,为了便于阅读,我首先通过提取.raise()中的x值,然后提取[0]中的y值来重写代码。

xdata

enter image description here