matplotlib:
能将数据进行可视化,更直观的呈现
使数据更加客观、更具说服力
折线图: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()
效果展示: