制作条形图
统计不同品牌上市电脑数量
新建方法
def bar_chart():
统计品牌个数
brands = {"联想": 0, "戴尔": 0, "华硕": 0, "惠普": 0, "HUAWEI": 0, "苹果": 0, "Acer": 0, "雷神": 0, "机械革命": 0, "技嘉": 0, "微软": 0, "ThinkPad": 0, "Alienware": 0, "机械师": 0, "ROG": 0, "荣耀": 0, "msi微星": 0, "Redmi": 0, "Razer": 0} for brand in brands: with open("笔记本信息.csv", "r") as messages: reader = csv.reader(messages) a = list(reader) # print(a) # print(len(a)) for i in range(0, len(a) - 1): resp = a[i + 1][0] # print(resp) # match = re.compile(r'(.*?)(%s)(.*?)', brand) if brand in resp: # print(resp+"中含有"+brand) brands[brand] = brands.get(brand) + 1 # 查看对应数量 # print(brand+":"+str(brands.get(brand)))
作无序图
plt.figure(figsize=(18, 12), dpi=300) labels = brands.keys() values = brands.values() plt.bar(labels, values) plt.title("各品牌电脑型号数量条形图", fontdict={'fontsize': 40}) plt.xlabel("品牌", fontdict={'fontsize': 25}) plt.ylabel("数量", fontdict={'fontsize': 25}) plt.savefig('各品牌电脑型号数量条形图(无序).png', dpi=300) plt.show()
要做有序的图,而bands为字典,无序
brands_order = sorted(brands.items(), key=lambda x: x[1]) print(brands_order)
排序后为字典,不能用.keys()/.values()方法
labels = brands_order.keys()
values = brands_order.values()
用循环获取排序后的labels和values
labels = [] for i in range(0, 18): labels.append(brands_order[i][0]) values = [] for i in range(0, 18): values.append(brands_order[i][1])
作有序图
plt.figure(figsize=(18, 12), dpi=300) plt.bar(labels, values) plt.title("各品牌电脑型号数量条形图", fontdict={'fontsize': 40}) plt.xlabel("品牌", fontdict={'fontsize': 25}) plt.ylabel("数量", fontdict={'fontsize': 25}) plt.savefig('各品牌电脑型号数量条形图(有序).png', dpi=300) plt.show()
成品图
成品如下图所示