Matplotlib 画图总结

matplotlib:

  1. 能将数据进行可视化,更直观的呈现

  2. 使数据更加客观、更具说服力

基础绘图:

折线图:plot

  • figure, plot,show

  • xticks,yticks:设置刻度,中文

  • xlabel,ylabel:设置坐标轴标题

  • lengend:添加图例

  • plt.subplots实现多个坐标系的图绘制

柱状图:bar

  • 画出条形图:pyplot.bar(x, width, align='center', **kwargs)

直方图:hist

  • 组数:数据按照不同的范围分成几个组

  • 组距:每一组两个端点的差

  • pyplot.hist(x, bins=None, normed=None, kwargs)

  • plt.grid(True, linestyle='--', alpha=0.5)

饼图:pie

  • 应用场景:表示不同分类的占比情况

  • API:plt.pie

  • 绘制:注意显示正 圆形 plt.axis("equal")

  • "%1.1f%%":后一个位置的数字表示显示小数的位数

柱状图案例展示一:

需求:每部电影的票房收入对比?

['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴', '降魔传','追捕','七十七天','密战','狂兽','其它']
[73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]

python3代码: 

import matplotlib.pyplot as plt

# 设置条形图的大小、清晰度
plt.figure(figsize=(12, 6), dpi=80)

# 电影名称
movies_name = ['雷神3:诸神黄昏', '正义联盟', '东方快车谋杀案', '寻梦环游记', '全球风暴', '降魔传', '追捕', '七十七天', '密战', '狂兽', '其它']
# 电影票房数
y = [73853, 57767, 22354, 15969, 14839, 8725, 8716, 8318, 7916, 6764, 52222]

# 放进横坐标的数字列表
x = range(len(movies_name))
y_ticks = range(80000)

# 画出条形图
plt.bar(x, y, width=0.5, color=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'k', 'c', 'g', 'y'])

# 修改刻度名称
plt.xticks(x, movies_name)
plt.yticks(y_ticks[::10000])

# 增加标题、x轴、y轴描述信息
plt.title("11月份电影票房对比")
plt.xlabel("电影名称")
plt.ylabel("票房数")

# 保存图像
plt.savefig("./movies.png")
# 显示图像
plt.show()

效果展示:

柱状图案例展示二:

需求:比较相同天数的票房?

movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']

first_day = [10587.6,10062.5,1275.7]
first_weekend=[36224.9,34479.6,11830]

# 数据来源: https://piaofang.maoyan.com/?ver=normal

python3代码: 

import matplotlib.pyplot as plt

# 设置条形图的大小、清晰度
plt.figure(figsize=(12, 6), dpi=80)

# 电影名称
movies_name = ['雷神3:诸神黄昏', '正义联盟', '寻梦环游记']
# 首日首周票房数
first_day = [10587.6, 10062.5, 1275.7]
first_weekend = [36224.9, 34479.6, 11830]

# 放进横坐标的数字列表
x = range(len(movies_name))
y_ticks = range(40000)

# 画出条形图
# plt.bar(x, y, width=0.5, color=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'k', 'c', 'g', 'y'])
plt.bar(x, first_day, width=0.2, label="首日票房")
# 首周柱状图显示的位置在首日的位置右边
plt.bar([i + 0.2 for i in x], first_weekend, width=0.2, label="首周票房")

# 显示X轴中文,固定在首日和首周的中间位置
plt.xticks([i + 0.1 for i in x], movies_name)
plt.yticks(y_ticks[::5000])

# 增加标题、x轴、y轴描述信息
plt.title("11月份电影票房对比")
plt.xlabel("电影名称")
plt.ylabel("票房数")
# 显示图例
plt.legend(loc=0)

# 保存图像
plt.savefig("./movies.png")
# 显示图像
plt.show()

效果展示:

直方图案例展示:

需求:现有250部电影的时长,希望统计出这些电影时长的分布状态

time =[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]

python3代码: 

import matplotlib.pyplot as plt

# 展现不同电影的时长分布状态
plt.figure(figsize=(10, 6), dpi=100)

# 准备时长数据
time = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130,
        124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111, 78, 132, 124, 113, 150, 110,
        117, 86, 95, 144, 105, 126, 130, 126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136, 123, 117, 119,
        105, 137, 123, 128, 125, 104, 109, 134, 125, 127, 105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120,
        114, 105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134, 156, 106, 117, 127, 144, 139, 139, 119,
        140, 83, 110, 102, 123, 107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133, 112, 114, 122, 109,
        106, 123, 116, 131, 127, 115, 118, 112, 135, 115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,
        136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141, 120, 117, 106, 149, 122, 122, 110, 118, 127,
        121, 114, 125, 126, 114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92, 121, 112, 146, 97, 137, 105,
        98, 117, 112, 81, 97, 139, 113, 134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110, 105, 129, 137,
        112, 120, 113, 133, 112, 83, 94, 146, 133, 101, 131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,
        111, 133, 150]
# 定义一个间隔大小
a = 2

# 得出组数
bins = int((max(time) - min(time)) / a)

# 画出直方图
plt.hist(time, bins, normed=1)

# 指定刻度的范围,以及步长
plt.xticks(list(range(min(time), max(time)))[::2])
# 增加标题、x轴、y轴描述信息
plt.title("不同电影的时长分布状态")
plt.xlabel("电影时长大小")
plt.ylabel("电影的数据量")
# 增加网格显示
plt.grid(True, linestyle='--', alpha=0.5)

# 保存图像
plt.savefig("./movies.png")
# 显示图像
plt.show()

效果展示:

饼状图案例展示:

需求:显示不同的电影的排片占比?

movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']

place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]

python3代码: 

import matplotlib.pyplot as plt

# 展现每部电影的排片的占比
plt.figure(figsize=(12, 6), dpi=100)

# 准备每部电影的名字,电影的排片场次
movie_name = ['雷神3:诸神黄昏', '正义联盟', '东方快车谋杀案', '寻梦环游记', '全球风暴', '降魔传', '追捕', '七十七天', '密战', '狂兽', '其它']
place_count = [60605, 54546, 45819, 28243, 13270, 9945, 7679, 6799, 6101, 4621, 20105]

# 通过pie
plt.pie(place_count, labels=movie_name, autopct='%1.2f%%',
        colors=['b', 'r', 'g', 'y', 'c', 'm', 'y', 'r', 'c', 'g', 'y'])

# 指定显示的pie是正圆
plt.axis('equal')
# 显示图例
plt.legend(loc='best')
# 增加标题
plt.title("排片占比示意图")
# 保存图像
plt.savefig("./movies.png")
# 显示图像
plt.show()

效果展示:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值