注:如需所用表格数据,可在本人主页资源栏内直接下载
制作条形图
统计不同品牌上市电脑数量
新建方法
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()
成品图
成品如下图所示