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")

结果: