matplotlib 条形图
一、特点
离散数据,数据之间没有直接的关系
二、分类
1、垂直条形图
bar(x, height, width=0.8) # x 为x轴 # height 为y轴 # width 为 条形图的宽度
例子
from matplotlib import pyplot as plt from matplotlib import font_manager a = ["战狼2", "熟读与激情8", "功夫瑜伽", "西游伏妖篇", "变形金刚5:\n 最后的骑士", "摔跤吧!爸爸", "加勒比海盗5:\n 死无对证", "金刚: 骷髅岛", "极限特工:\n 终极回归", "生化危机6:\n 终章", "乘风波浪", "神偷奶爸3", "智取威虎山", "大闹天竺", "金刚狼3:\n 殊死一战", "蜘蛛侠:\n 英雄归来", "悟空转", "银河护卫队2", "情圣", "新木乃伊"] b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11.28, 11.12, 10.49, 10.3, 8.75, 7.55, 7.32, 6.99, 6.88, 6.86, 6.58, 6.23] # 设置中文显示 my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msjh.ttc") # 设置图形大小 plt.figure(figsize=(20, 10), dpi=80) # 绘图 x = range(len(a)) plt.bar(x, b, width=0.4, color="#FF00FF") # 设置x轴刻度和label plt.xticks(x, a, fontproperties=my_font, rotation=45) plt.grid(alpha=0.4) # 添加描述 plt.xlabel("电影", fontproperties=my_font) plt.ylabel("票房 单位(亿)", fontproperties=my_font) plt.title("2017年票房前20", fontproperties=my_font) # 保存图片 plt.savefig("./movie.png") plt.show()
2、水平条形图
barh(y, width, height=0.8) # y是y轴 # width是x轴 # height是条形图的宽度
例子
from matplotlib import pyplot as plt from matplotlib import font_manager a = ["战狼2", "熟读与激情8", "功夫瑜伽", "西游伏妖篇", "变形金刚5: 最后的骑士", "摔跤吧!爸爸", "加勒比海盗5: 死无对证", "金刚: 骷髅岛", "极限特工: 终极回归", "生化危机6: 终章", "乘风波浪", "神偷奶爸3", "智取威虎山", "大闹天竺", "金刚狼3: 殊死一战", "蜘蛛侠: 英雄归来", "悟空转", "银河护卫队2", "情圣", "新木乃伊"] b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11.28, 11.12, 10.49, 10.3, 8.75, 7.55, 7.32, 6.99, 6.88, 6.86, 6.58, 6.23] # 设置中文显示 my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msjh.ttc") # 设置图形大小 plt.figure(figsize=(20, 10), dpi=80) # 绘图 y = range(len(a)) plt.barh(y, b, height=0.4, color="#FF00FF") # 设置y轴的刻度和label plt.yticks(y, a, fontproperties=my_font) # 添加描述 plt.xlabel("票房 单位(亿)", fontproperties=my_font) plt.ylabel("电影", fontproperties=my_font) plt.title("2017年票房前20", fontproperties=my_font) # 添加网格 plt.grid(alpha=0.4) plt.show()
三、多个条形图
from matplotlib import pyplot as plt from matplotlib import font_manager a = ["猩球崛起: 终极之战", "敦刻尔克", "蜘蛛侠: 英雄归来", "战狼2"] b_16 = [15746, 312, 4497, 319] b_15 = [12357, 156, 2045, 168] b_14 = [2358, 399, 2358, 262] my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msjh.ttc") bar_width = 0.2 # 设置图形大小 plt.figure(figsize=(20, 8), dpi=80) # 绘图 x_14 = range(len(a)) x_15 = [i + bar_width for i in range(len(a))] x_16 = [i + 2 * bar_width for i in range(len(a))] plt.bar(x_14, b_14, width=bar_width, label="14号票房") plt.bar(x_15, b_15, width=bar_width, label="15号票房") plt.bar(x_16, b_16, width=bar_width, label="16号票房") # 设置x轴刻度 plt.xticks(x_15, a, fontproperties=my_font) # 添加描述 plt.xlabel("电影", fontproperties=my_font) plt.ylabel("票房", fontproperties=my_font) plt.title("3天票房比较", fontproperties=my_font) # 添加图例 plt.legend(prop=my_font) # 展示图片 plt.show()