matplotlib绘制散点图、条形图、直方图
一、散点图
散点图顾名思义,图中的每个点都是离散的,但是通过绘制散点图我们能够有效的发现数据之间的规律。
接下来就以温度为例,我们实际操作下
from matplotlib import pyplot as plt
import matplotlib as mt
# 设置中文及字体大小
font = {'family': 'MicroSoft YaHei',
'weight': 'bold',
'size': '16'}
mt.rc('font', **font)
# 数据准备
#7月最高温度 31天
y_1 = [32,28,23,25,29,27,27,27,30,30,24,25,29,29,25,29,30,31,30,27,33,24,31,32,29,32,32,33,24,27,32]
#8月最高温度 31天
y_2 = [33,21,30,31,27,28,32,32,30,34,35,34,33,34,34,34,34,31,26,24,25,26,32,33,32,33,26,32,28,26,22]
x_1 = range(1,32)
x_2 = range(51,82)
plt.figure(figsize=(20,8),dpi=80)
# 绘制散点图
plt.scatter(x_1,y_1,label = "七月",color = "orange")
plt.scatter(x_2,y_2,label = "八月",color = "cyan")
# 设置步长
_x = list(x_1)+list(x_2)
_xticks_label = ["七月{}".format(i) for i in x_1]
_xticks_label += ["八月{}".format(i-50) for i in x_2]
plt.xticks(list(_x)[::3],_xticks_label[::3],rotation = 45)
# 设置x信息
plt.xlabel("月份")
plt.ylabel("最高温度")
plt.title("最高温度统计")
plt.legend(loc="upper left")
plt.savefig("./sdt")
结果
从图中可以看到七月份最高温度一直处于上升的状态,但是到了八月份,温度首先是持平,然后再下降,七月份的温度就能够很好的用最小二乘法求出其函数表达式,对温度预测做出指导。
二、条形图
条形图的用处是用来做数理统计,给人直观的感受,接下来以电影票房为例我们做一下
from matplotlib import pyplot as plt
import matplotlib as mt
font = {'family' : 'MicroSoft YaHei',
'weight' : 'bold',
'size' : '16'}
mt.rc('font', **font)
# 电影
x = ["罗小黑战记","速度与激情","哪吒之魔童降世","宝莱坞机器人","徒手攀岩",
"烈火英雄"]
# 票房
y_1 = [20,21,25,29,30,14]
y_2 = [33,34,35,36,37,10]
y_3 = [26,22,28,8,10,19]
bar_width = 0.2
x_len = list(range(len(x)))
x2_width = [i+bar_width for i in x_len]
x3_width = [i+bar_width*2 for i in x_len]
plt.figure(figsize=(20,10),dpi=80)
plt.bar(range(len(x)),y_1,width=bar_width,label="第一天")
plt.bar(x2_width,y_2,width=bar_width,label="第二天")
plt.bar(x3_width,y_3,width=bar_width,label="第三天")
# 步长
plt.xticks(x2_width,x,rotation=45)
plt.legend(loc="upper right")
plt.savefig("./fzpftj")
结果
三、直方图
在绘制直方图之前需要先复习一个数学公式 组数=极差/组距,极差为现有数据中最大值和最小值的差,组距每组数的长度。
from matplotlib import pyplot as plt
import matplotlib as mt
font = {'family' : 'MicroSoft YaHei',
'weight' : 'bold',
'size' : '16'}
mt.rc('font', **font)
x = [32,28,23,25,29,27,27,27,30,30,24,25,29,29,25,29,30,31,30,27,33,24,31,32,29,32,32,33,24,27,32]
# 计算组数
d = 3 #组距
num_bins = (max(x)-min(x))//d
# 设置图形大小
plt.figure(figsize=(20,10),dpi=80)
# 直方图
# plt.hist(x,num_bins)
plt.hist(x,num_bins,density=True) #频率分布直方图 density=True
# 设置组距
plt.xticks(range(min(x),max(x)+d,d))
plt.grid()
plt.savefig("./zft")
结果: