matplotlib 统计图

对比常用统计图

折线图:以折线的上升或者下降来表示统计数量的增减变化的统计图

特点:能够显示数据的变化趋势,反映事物的变化情况。

在这里插入图片描述

直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况
              (一般用横轴表示数据范围,纵轴表示分布情况)

特点:绘制连续性的数据,展示一组或者多组数据的分布情况(统计)

在这里插入图片描述

条形图:排列在工作表中的行或列中的数据可以绘制到条形图中

特点:绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别(统计)

在这里插入图片描述

散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两个变量之间是否存在某种关联                     或总结坐标点的分布模式

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

在这里插入图片描述

 作业:

1.假设通过爬虫你获取到了北京2016年3、10月份每天白天的最高气温(分别位于列表a,b)那么此时如何寻找气温随时间(天)变化的某种规律?

a = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]

b = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]

2.假设你知道了列表a中电影分别在2017-09-14  、 09-15 、 09-16 三天的票房,为了展示列表中电影本身的票房以及同其他电影的数据对比情况2,应该如何更加直管的来呈现该数据。

a = ["蜘蛛侠", "战狼2", "猩球崛起3"]

b_16 = [15746,312,4497,319]

b_15 = [12357,156,2045,168]

c_14 = [2358,399,32358,362]

3.假设你获取了5部电影的时长(列表a中),希望统计出这些电影市场的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据?

a=[131, 98, 125, 165, 123]

散点图:

from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import font_manager

#中文字体
my_foot = font_manager.FontProperties(fname='C:\Windows\Fonts\simfang.ttf')

x_3 = range(1, 32)
x_10 = range(41, 72)
y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]

# 散点图 (设置大小)
plt.figure(figsize=(15,8), dpi=80)
plt.scatter(x_3, y_3, label="3月份")
plt.scatter(x_10, y_10, label="10月份")

# # 调整x轴的刻度
_x = list(x_3) + list(x_10)
_xtick_labels = ["3月{}日".format(i) for i in x_3]
_xtick_labels += ["10月{}日".format(i-40) for i in x_10]
plt.xticks(_x[::3], _xtick_labels[::3], fontproperties=my_foot, rotation=45)

# 添加图例
plt.legend(loc='upper left', prop=my_foot)

# 添加描述信息
plt.xlabel("时间", fontproperties=my_foot)
plt.ylabel("温度", fontproperties=my_foot)
plt.title("标题", fontproperties=my_foot)

# 展示
plt.show()

条形图:

# 绘制竖形条形图
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_foot = font_manager.FontProperties(fname='C:\Windows\Fonts\simfang.ttf')

a = ["战狼2", "速度与激情8", "功夫瑜伽", "西游伏妖篇"]
b = [56.01, 26.94, 17.53, 16.49]

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

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

# 添加图例
plt.legend(loc='upper left', prop=my_foot)

# 添加描述信息
plt.xlabel("电影", fontproperties=my_foot)
plt.ylabel("评分", fontproperties=my_foot)
plt.title("电影评分数据", fontproperties=my_foot)

# 设置字符串到x轴
plt.xticks(range(len(a)), a, fontproperties=my_foot, rotation=45)

# 图片保存
plt.savefig('./dianying.png')

plt.show()

直方图

from matplotlib import pyplot as plt
from matplotlib import font_manager

a = [131, 98, 125, 165, 110]

# 计算组数
d = 5  # 组距
num_bins = (max(a)-min(a))//d

# 设置图片的大小
plt.figure(figsize=(15, 8), dpi=80)
plt.hist(a, num_bins, density=True)

# 设置x轴的刻度
plt.xticks(range(min(a), max(a)+d, d))

plt.grid()

plt.show()

注·:横行条形图只需修改一下内容

# 绘制条形图
plt.barh(range(len(a)), b, height=0.3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值