matplotlib学习总结:04绘制条线图、横向条形图、多个条形图

1. 简单条形图

  • 使用bar方法绘制条形图
  • width参数可以指定条形图的宽度
  • 其他的一些设置与之前相同
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 显示中文

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]

# 图形大小
plt.figure(figsize=(20, 15), dpi=80)

# 条形图API
plt.bar(range(len(a)), b, width=0.3)

# 设置字符串
plt.xticks(range(len(a)), a, rotation=90)

plt.savefig('./movie.png')

plt.show()

2. 横向条形图

  • 使用barh方法
  • 需要注意的是,原本x轴的标签跑到了y轴上,因此使用了yticks
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 显示中文

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]

# 图形大小
plt.figure(figsize=(20, 15), dpi=80)

# 条形图API
plt.barh(range(len(a)), b, height=0.3, color='orange')

# 设置字符串
plt.yticks(range(len(a)), a)

# 网格
plt.grid(alpha=0.3)

plt.savefig('./movie.png')

plt.show()

3. 多个条形图(每个刻度有N个柱形)

  • 调用三次bar方法即可绘制,注意的是 柱形的宽度*个数 不能>1,否则会发生重叠现象

  • 一般而言,复合的图最好指定label标签,避免混淆

from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 显示中文
a = ["猩球崛起3:终极之战", "敦刻尔克", "蜘蛛侠:英雄归来", "战狼2"]
b_16 = [15746, 312, 4497, 319]
b_15 = [12357, 156, 2045, 168]
b_14 = [2358, 399, 2358, 362]

bar_width = 0.2  # 这里的bar_width*图的数量不能大于1,否则会重叠

x_14 = list(range(len(a)))
x_15 = [i + bar_width for i in x_14]
x_16 = [i + bar_width * 2 for i in x_14]

# 设置图形的大小
plt.figure(figsize=(20, 8), dpi=80)

plt.bar(x_14, b_14, width=bar_width, label="9月14日")
plt.bar(x_15, b_15, width=bar_width, label="9月15日")
plt.bar(x_16, b_16, width=bar_width, label="9月16日")

# 图例
plt.legend()

# x轴刻度
plt.xticks(x_15, a)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值