第三章 Matplotlib 数据可视化基础
3.1掌握绘图基础语法与常用参数
3.1.1掌握pypot基础语法
大部分的pyplot图形绘制都遵循一个流程,使用这个流程可以完成大部分图形的绘制。pyplot基本绘图流程主要分为3个部分,如下所示。
- 创建画布与创建子图
- 添加画布内容
- 保存与显示图片
#pyplot中的基础绘图语法
import numpy as np
import matplotlib.pyplot as plt
# %matlpotlib inline
data=np.arange(0,1.0,0.01)
plt.title('lines')#添加标题
plt.xlabel('x')#添加x轴的名称
plt.ylabel('y')#添加y轴的名称
plt.xlim((0,1))#确定x轴的范围
plt.ylim((0,1))#确定y轴的范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])#规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])#规定y轴刻度
plt.plot(data,data**2)#添加y=x^2曲线
plt.plot(data,data**4)#添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
plt.savefig('./tmp/y=x^2.png')
plt.show()
#包含子图绘制的基础语法
import numpy as np
rad=np.arange(0,np.pi*2,0.01)
#第一幅子图
pl=plt.figure(figsize=(8,6),dpi=80)#确定画布的大小
ax1=pl.add_subplot(2,1,1)#创建一个2行1列的子图,并开始绘制第一幅
plt.title('lines')#添加标题
plt.xlabel('x')#添加x轴的名称
plt.ylabel('y')#添加y轴的名称
plt.xlim((0,1))#确定x轴的范围
plt.ylim((0,1))#确定y轴的范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])#规定x轴的刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])#规定y轴的刻度
plt.plot(rad,rad**2)#添加y=x^2曲线
plt.plot(rad,rad**4)#添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
#第二幅子图
ax2=pl.add_subplot(2,1,2)
plt.title('sin/cos')#添加标题
plt.xlabel('rad')#添加x轴的名称
plt.ylabel('value')#添加y轴的名称
plt.xlim((0,np.pi*2))#确定x轴的范围
plt.ylim((-1,1))#确定y轴的范围
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])#规定x轴的刻度
plt.yticks([-1,-0.5,0,0.5,1])#规定y轴的刻度
plt.plot(rad,np.sin(rad))#添加y=x^2曲线
plt.plot(rad,np.cos(rad))#添加y=x^4曲线
plt.legend(['sin','cos'])
plt.savefig('./tmp/sincos.png')
plt.show()
3.1.2设置pyplot的动态rc参数
#调节线条的rc参数
#原图
x=np.linspace(0,4*np.pi)#生成x轴的数据
y=np.sin(x)#生成y轴数据
plt.plot(x,y,label="$sin(x)$")#绘制sin曲线图
plt.title('sin')
plt.savefig('./tmp/默认sin曲线.png')
plt.show()
#修改rc参数后的图
plt.rcParams['lines.linestyle']='-.'#设置线条样式
plt.rcParams['lines.linewidth']=3 #设置线条宽度
plt.plot(x,y,label="$sin(x)$")#绘制三角函数
plt.title('sin')
plt.savefig('./tmp/修改rc参数后sin曲线.png')
plt.show()
#调节字体的rc参数
#无法显示中文标题
plt.plot(x,y,label="$sin(x)$")#绘制三角函数
plt.title('sin曲线')
plt.savefig('./tmp/无法显示中文标题sin曲线.png')
plt.show()
#设置rc参数显示中文标题
#设置字体为SimHei显示中文
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False#设置正常显示符合
plt.plot(x,y,label="$sin(x)$")#绘制三角函数
plt.title('sin曲线')
plt.savefig('./tmp/显示中文标题sin曲线.png')
plt.show()
任务3.2 分析特征间的关系
3.2.1绘制散点图
#绘制2000-2017年各季度国民生产总值散点图
import numpy as np
# %matplotlib inline(不加这行,图片不显示)
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'#设置中文显示
plt.rcParams['axes.unicode_minus']=False #设置正常显示符合
data=np.load('C:/Users/ljy15/Python数据分析与应用/Python数据分析与应用数据/第3章/任务程序/data/国民经济核算季度数据.npz',allow_pickle=True)
name=data['columns']#提取其中的columns数组,视为数据的标签
values=data['values']#提取其中的values数组,视为数据的存在位置
plt.figure(figsize=(8,7))#设置画布
plt.scatter(values[:,0],values[:,2],marker='o')#绘制散点图
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim((0,225000))#确定y轴的范围
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#规定x轴的刻度
plt.title('2000-2017年度各季度国民生产总值散点图')#添加图表标题
plt.savefig('./tmp/2000-2017年度各季度国民生产总值散点图.png')
plt.show()
#绘制2000-2017年间各产业各季度国民生产总值的散点图
plt.figure(figsize=(8,7))#设置画布
#绘制散点图1
plt.scatter(values[:,0],values[:,3],marker='o',c='red')
#绘制散点图2
plt.scatter(values[:,0],values[:,4],marker='D',c='blue')
#绘制散点图3
plt.scatter(values[:,0],values