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()

 

posted @ 2019-11-27 23:32  市丸银  阅读(228)  评论(0编辑  收藏  举报