当前位置:   article > 正文

matplotlib数据可视化之绘制散点图、折线图、直方图、柱状图、饼图、箱线图_绘制折线图,饼图,箱形图,散点图的方法,并举例。

绘制折线图,饼图,箱形图,散点图的方法,并举例。

1.绘制散点图:scatter

scatter函数:
示例:

plt.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs)
  • 1

常用参数及说明:

x,y 	接收array。表示x轴和y轴对应的数据。无默认。

s   	接收数值或者一维的array。指定点的大小,若传入一维array则表示每个点的大小。默 认为None。

c		接收颜色或者一维的array。指定点的颜色,若传入一维array则表示每个点的颜色。默 认为None

marker	接收特定string。表示绘制的点的类型。默认为None。

alpha	接收0-1的小数。表示点的透明度。默认为None。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.绘制折线图:plot

plot 函数:
示例:

plt.plot(*args, **kwargs)

#plot函数在官方文档的语法中只要求填入不定长参数,
实际可以填入的主要参数主要如下。
  • 1
  • 2
  • 3
  • 4

参数及说明:

x,y 	接收array。表示x轴和y轴对应的数据。无默认。

color 	接收特定string。指定线条的颜色。默认为None。
 
linestyle 	接收特定string。指定线条类型。默认为“-”。 

marker 	接收特定string。表示绘制的点的类型。默认为None。

alpha 	接收0-1的小数。表示点的透明度。默认为None。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.绘制直方图:hist

4.绘制柱状图:bar

bar函数:

plt.bar(left,height,width = 0.8,bottom = None,
		hold = None,data = None, ** kwargs )
  • 1
  • 2

常用参数说明:

left 	接收array。表示x轴数据。无默认。

height 	接收array。表示x轴所代表数据的数量。无默认。

width 	接收0-1之间的float。指定直方图宽度。默认为0.8。

color 	接收特定string或者包含颜色字符串的array。表示直方图颜色。默认为None。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5.绘制饼图:pie

pie函数:

plt.pie(x, explode=None, labels=None, colors=None, 
		autopct=None, pctdistance=0.6, shadow=False, 
		labeldistance=1.1, startangle=None, radius=None, … )
  • 1
  • 2
  • 3

参数说明:

x 	无接收array。表示用于绘制撇的数据。无默认。

autopct	接收特定string。指定数值的显示方式。默 认为None。

explode 接收array。表示指定项离饼图圆心为n个半径。默认为None

labels 	接收array。指定每一项的名称。默认为None

color 	接收特定string或者包含颜色字符串的array。表示饼图颜色。默认为None。

pctdistance	接收float。指定每一项的比例和距离饼图 圆心n个半径。默认为0.6。

labeldistance	接收float。指定每一项的名称和距离饼图 圆心多少个半径。默认为1.1。

radius	接收float。表示饼图的半径。默认为1。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

6.绘制箱线图:boxplot

箱线图(boxplot)也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散 情况的关键信息,尤其在比较不同特征时,更 可表现其分散程度差异。

箱线图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来 描述数据,它也可以粗略地看出数据是否具有 对称性、分布的分散程度等信息,特别可以用 于对几个样本的比较。

在这里插入图片描述

7.相关实例代码

实例1:散点图基础

import matplotlib.pyplot as plt

# 1、创建画布
plt.figure()
# 2、绘图
#准备点的坐标(x,y)
x = [1,2,3]

y = [6,8,3]

#绘制散点图
# s 代表点的大小,传一个代表这一组点都是一样的大小
# 传一个数组,数组对应的值就是对应点的大小
# c 代表颜色,传一个代表这组点都是一种颜色,
# 传一个数组,数组对应的值就是对应点的颜色
# alpha  透明度
plt.scatter(x,y,s=[12,80,120],marker="*",c=['r','g','y'],alpha=0.8)
# 3、展示
plt.show()

# 1、符合顺序的那种散点图,可以用来观察发展趋势
# 2、聚合的散点图,是用来观察样本、特征之间的相关联系
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

实例1结果:
在这里插入图片描述
实例2:各产业、行业总值散点图:

import  matplotlib.pyplot as plt
import  numpy as np

# 加载数据
#加载数据
data = np.load("./国民经济核算季度数据.npz")

columns = data['columns']
values = data['values']

print(columns)
print(values)

#创建画布
fig = plt.figure(figsize=(20,10))
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False

# 绘图
fig.add_subplot(2,1,1)
# 准备xy 数据
x = values[:,0]

y1 = values[:,3]
y2 = values[:,4]
y3 = values[:,5]

plt.scatter(x,y1)
plt.scatter(x,y2)
plt.scatter(x,y3)

# 增加标题
plt.title("2000-2017年各产业季度生产总值散点图")
#增加轴名称
plt.ylabel("生产总值(亿元)")

# 增加x刻度
# plt.xticks(x[::4],values[:,1][::4],rotation=45,horizontalalignment='right')
plt.xticks(x[::4],np.arange(1,values.shape[0]+1)[::4])
# plt.text()

# 增加图例
plt.legend([tmp[:4] for tmp in columns[3:6]])

fig.add_subplot(2,1,2)
# 准备xy 数据 x--序号 y  各个行业生产总值
x = values[:,0]

# y = values[:,6:] 不可以这么绘制,必须一列一列一一绘制
# plt.scatter(x,y)
# #
y1 = values[:,6]
y2 = values[:,7]
y3 = values[:,8]
y4 = values[:,9]
y5 = values[:,10]
y6 = values[:,11]
y7 = values[:,12]
y8 = values[:,13]
y9 = values[:,14]

plt.scatter(x,y1)
plt.scatter(x,y2)
plt.scatter(x,y3)
plt.scatter(x,y4)
plt.scatter(x,y5)
plt.scatter(x,y6)
plt.scatter(x,y7)
plt.scatter(x,y8)
plt.scatter(x,y9)

# 增加轴名称
plt.ylabel("生产总值(亿元)")

# 增加x刻度
plt.xticks(x[::4],values[:,1][::4],rotation=45,horizontalalignment='right')

# plt.text()

# 增加图例 fontsize 大小
plt.legend([tmp[:2] for tmp in columns[6:]],fontsize=8,loc=2)


#保存图片
plt.savefig("./2000-2017年各产业、行业季度生产总值散点图.png")
# 展示
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

实例2结果:
在这里插入图片描述
示例3:柱状图


#柱状图---有限类别数量的柱子 ---少量数据---对比类别数据差距
#直方图 -- 各个区间内数量的柱子---大量数据---数据的分布规律

# 导包
import  matplotlib.pyplot as plt

# 1、创建画布
plt.figure()
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False

# 2、绘图
# 模拟 学校里面爱好乒乓球、篮球、羽毛球的人数对比
x =[1,2,3]

y =[120,234,320]

# height 柱子高度,具体的数值
# width 柱子的宽度
# x 类别序号
plt.bar(x,height=y,width=0.5,color=['r','g','y'])
# 增加标题
plt.title("各球类运动爱好者柱状图")

# 修改刻度
plt.xticks(x,["乒乓球","篮球","羽毛球"])

# 标注
for i,j in zip(x,y):
    plt.text(i,j+3,"%d人"%j,horizontalalignment='center')

# 增加轴名称
plt.xlabel("球类运动")
plt.ylabel("人数")

# 保存图片
plt.savefig("各球类运动爱好者柱状图.png")
# 3、展示
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

示例3结果:
在这里插入图片描述

示例4:直方图:

import  matplotlib.pyplot as plt
import  numpy as np

# 1、创建画布
plt.figure()
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False
# 2、绘图
#身高案例:
#
height = np.array([150,156,167,168,166,172,170,184,189,192,164,173,172,178,177])

# 自定义分组---等宽分组
bins = np.arange(height.min(),height.max()+5,5)

# print(bins)

# 绘制直方图
plt.hist(height,bins=bins,edgecolor='r',color='g')

#修改刻度u
plt.xticks(bins)

# 增加网格曲线
plt.grid(b=True,axis='y')

# 增加轴名称
plt.xlabel("身高")
plt.ylabel("人数")
# 增加标题
plt.title("学生身高统计直方图")

# 保存图片
plt.savefig("./学生身高统计直方图.png")

# 3、展示
plt.show()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

示例4结果:
在这里插入图片描述
示例5:饼图

import  matplotlib.pyplot as plt
import  numpy as  np

#加载数据
data = np.load("./国民经济核算季度数据.npz")

columns = data['columns']
values = data['values']

print(columns)
print(values)

# #1、创建画布
plt.figure()
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False


# # 2、绘图
# # 2017第一季度  这一行所对应的 一、二、三产业 总值具体的值
#准备数据
x = values[-1,3:6]
# 设置缝隙--距离圆心的半径
# explode=(0.01,0.02,0.03)
# 设置标签
labels=[tmp[:4] for tmp in columns[3:6]]
# 设置颜色
colors= ['r','g','y']
# shadow ---阴影
# 绘图
plt.pie(x,labels=labels,colors=colors,autopct='%.2f%%',shadow=True)

# 将椭圆变为圆形
plt.axis('equal')

# 增加标题
plt.title("2017年第一季度各个产业生产总值饼图")

# 设置图例
plt.legend(labels)

# 保存图片
plt.savefig("./2017年第一季度各个产业生产总值饼图.png")
# # 3、展示
plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

示例5结果:
在这里插入图片描述
示例6:箱线图:

import  matplotlib.pyplot as plt
import  numpy as np

#加载数据
data = np.load("./国民经济核算季度数据.npz")

columns = data['columns']
values = data['values']

print(columns)
print(values)

# 绘图

# 1、创建画布
plt.figure()
# 默认不支持中文,需要配置RC参数
plt.rcParams['font.sans-serif']='SimHei'
# 默认不支持负号,需要配置RC参数
plt.rcParams['axes.unicode_minus']=False

# 2、绘图
# 准备数据--第一产业的值

x = (values[:,3],values[:,4],values[:,5]) #此方法不行时,使用下一行方法
# x = list([list(values[:,3]),list(values[:,4]),list(values[:,5])])

#绘图
# notch 是否缺口
labels= [tmp[:4] for tmp in columns[3:6]]
plt.boxplot(x,notch=True,meanline=True,showmeans=True)

# 3、展示
plt.show()


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

结果为:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/612046
推荐阅读
相关标签
  

闽ICP备14008679号