函数名称 | 函数作用 |
---|---|
plt.figure | 创建一个空白画布,可以指定画布大小,像素 |
figure.add_subplot | 创建并选中子图,可以指定子图的行数,列数,与选中图片编号 |
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(4,4))
x = np.arange(10)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x,y1)
plt.show()
plt.plot(x,y1)
plt.plot(x,y2)
plt.legend(['sin()','cos()'])
plt.title('三角函数图列')
plt.xlabel('x值')
plt.ylabel('y值')
plt.show()
from matplotlib import rcParams
#支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.plot(x,y1)
plt.plot(x,y2)
plt.legend(['sin()','cos()'])
plt.title('三角函数图列')
plt.xlabel('x值')
plt.ylabel('y值')
plt.show()
函数名称 | 函数作用 |
---|---|
plt.title | 在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等参数 |
plt.xlabel | 在当前图形中添加x轴名称,可以指定位置、颜色、字体大小等参数 |
plt.ylabel | 在当前图形中添加y轴名称,可以指定位置、颜色、字体大小等参数 |
plt.xlim | 指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识 |
plt.ylim | 指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识 |
plt.xticks | 指定x轴刻度的数目与取值 |
plt.yticks | 指定y轴刻度的数目与取值 |
plt.legend | 指定当前图形的图例,可以指定图例的大小、位置、标签 |
函数名称 | 函数作用 |
---|---|
plt.savafig | 保存绘制的图片,可以指定图片的分辨率、边缘的颜色等参数 |
plt.show | 在本机显示图形 |
from matplotlib import rcParams
#支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
x = np.arange(10)#x轴
y1 = np.sin(x)#y轴
y2 = np.cos(x)
plt.plot(x,y1)#画sin()图像
plt.plot(x,y2)#画cos()图像
plt.legend(['sin()','cos()'])#标明图列
plt.title('三角函数图列')#显示标题
plt.xlabel('x值')#标记x轴
plt.ylabel('y值')#标记y轴
plt.savefig('./sin_cos.png')#保存图片到本地
plt.show()#展示图片
import os
os.listdir('./')
['.ipynb_checkpoints',
'Matplotlib数据可视化基础.ipynb',
'sin_cos.png',
'国民经济核算季度数据.npz']
参数名称 | 说明 |
---|---|
x,y | 接收array。表示x轴和y轴对应的数据。无默认 |
s | 接收数值或者一维的array。指定点的大小,若传入一维array则表示每个点的大小。默认为None |
c | 接收颜色或者一维的array。指定点的颜色,若传入一维array则表示每个点的颜色。默认为None |
marker | 接收特定string。表示绘制的点的类型。默认为None |
alpha | 接收0-1的小数。表示点的透明度。默认为None |
data = np.load('./国民经济核算季度数据.npz')#allow_pickle=True
data.files
['columns', 'values']
查看数据:
data = np.load('./国民经济核算季度数据.npz',allow_pickle=True)#allow_pickle=True用于解决报错问题
data['columns']#相当于header
array(['序号', '时间', '国内生产总值_当季值(亿元)', '第一产业增加值_当季值(亿元)', '第二产业增加值_当季值(亿元)',
'第三产业增加值_当季值(亿元)', '农林牧渔业增加值_当季值(亿元)', '工业增加值_当季值(亿元)',
'建筑业增加值_当季值(亿元)', '批发和零售业增加值_当季值(亿元)', '交通运输、仓储和邮政业增加值_当季值(亿元)',
'住宿和餐饮业增加值_当季值(亿元)', '金融业增加值_当季值(亿元)', '房地产业增加值_当季值(亿元)',
'其他行业增加值_当季值(亿元)'], dtype=object)
data['values']#相当于body
array([[1, '2000年第一季度', 21329.9, ..., 1235.9, 933.7, 3586.1],
[2, '2000年第二季度', 24043.4, ..., 1124.0, 904.7, 3464.9],
[3, '2000年第三季度', 25712.5, ..., 1170.4, 1070.9, 3518.2],
...,
[67, '2016年第三季度', 190529.5, ..., 15472.5, 12164.1, 37964.1],
[68, '2016年第四季度', 211281.3, ..., 15548.7, 13214.9, 39848.4],
[69, '2017年第一季度', 180682.7, ..., 17213.5, 12393.4, 42443.1]],
dtype=object)
(1) 绘制第一产业增加值
plt.scatter(range(69),data['values'][:,2])
plt.show()
(2) 绘制第一、二、三产业增加值
for i in [3,4,5]:#分别对应一二三产业
plt.scatter(range(69),data['values'][:,i])
plt.legend(['1','2','3'])
plt.show()
参数名称 | 说明 |
---|---|
x,y | 接收array。表示x轴和y轴对应的数据。无默认 |
color | 接收特定string。指定线条的颜色。默认为None |
linestyle | 接收特定string。指定线条类型。默认为“-” |
marker | 接收特定string。表示绘制的点的类型。默认为None |
alpha | 接收0-1的小数。表示点的透明度。默认为None |
(1) 绘制一二三产业的折线图
from matplotlib import rcParams
#支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
for i in [3,4,5]:#分别对应一二三产业
plt.plot(range(69),data['values'][:,i])
plt.legend(['第一产业','第二产业','第三产业'])
plt.show()
l = ['r','b','c']#颜色
m = ['o','d','*']#形状分别为:圆形,菱形,星形
for j,i in enumerate([3,4,5]):
plt.plot(range(69),data['values'][:,i],c=l[j],marker=m[j],alpha=0.5)#alpha为透明度
plt.legend(['第一产业','第二产业','第三产业'])
plt.show()
l = ['r','b','c']#颜色
m = ['o','d','*']#形状分别为:圆形,菱形,星形
#plt.xlim((0,10))#设置数值的显示范围
plt.figure(figsize=(20,6))#设置图像画布比例
for j,i in enumerate([3,4,5]):
plt.plot(data['values'][:,1],data['values'][:,i],c=l[j],marker=m[j],alpha=0.5)#alpha为透明度
plt.legend(['第一产业','第二产业','第三产业'])
plt.xticks(rotation=90)#x轴数据旋转90°
plt.show()
参数名称 | 说明 |
---|---|
left | 接收array。表示x轴数据。无默认 |
height | 接收array。表示x轴所代表数据的数量。无默认 |
width | 接收0-1之间的float。指定直方图宽度。默认为0.8 |
color | 接收特定string或者包含颜色字符串的array。表示直方图颜色。默认为None |
data['values']
array([[1, '2000年第一季度', 21329.9, ..., 1235.9, 933.7, 3586.1],
[2, '2000年第二季度', 24043.4, ..., 1124.0, 904.7, 3464.9],
[3, '2000年第三季度', 25712.5, ..., 1170.4, 1070.9, 3518.2],
...,
[67, '2016年第三季度', 190529.5, ..., 15472.5, 12164.1, 37964.1],
[68, '2016年第四季度', 211281.3, ..., 15548.7, 13214.9, 39848.4],
[69, '2017年第一季度', 180682.7, ..., 17213.5, 12393.4, 42443.1]],
dtype=object)
数据可视化:
dt = data['values'][68,3:6]#读取序列号为69的一二三产业数据
plt.bar(range(len(dt)),dt)
plt.xticks(range(len(dt)),['第一产业','第二产业','第三产业'])
plt.show()
参数名称 | 说明 |
---|---|
x | 接收array。表示用于绘制撇的数据。无默认 |
explode | 接收array。表示指定项离饼图圆心为n个半径。默认为None |
labels | 接收array。指定每一项的名称。默认为None |
color | 接收特定string或者包含颜色字符串的array。表示饼图颜色。默认为None |
autopct | 接收特定string。指定数值的显示方式。默认为None |
pctdistance | 接收float。指定每一项的比例和距离饼图圆心n个半径。默认为0.6 |
labeldistance | 接收float。指定每一项的名称和距离饼图圆心多少个半径。默认为1.1 |
radius | 接收float。表示饼图的半径。默认为1 |
plt.figure(figsize=(4,4))#设置画布大小,图像显示为正圆
#画图,autopct显示百分比,explode向外凸,labels为图列标签,labeldistance为距离
plt.pie(dt,autopct='%.2f%%',explode=[0.2,0,0],labels=['第一产业','第二产业','第三产业'],labeldistance=1.4)
plt.show()
箱线图(boxplot)也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。
箱线图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别可以用于对几个样本的比较,如图:
boxplot函数
参数名称 | 说明 |
---|---|
x | 接收array。表示用于绘制箱线图的数据。无默认 |
notch | 接收boolean。表示中间箱体是否有缺口。默认为None |
sym | 接收特定sting。指定异常点形状。默认为None |
vert | 接收boolean。表示图形是横向纵向或者横向。默认为None |
positions | 接收array。表示图形位置。默认为None |
widths | 接收scalar或者array。表示每个箱体的宽度。默认为None |
labels | 接收array。指定每一个箱线图的标签。默认为None |
meanline | 接收boolean。表示是否显示均值线。默认为False |
plt.boxplot(data['values'][:,3])
plt.show()