第三章Matplotlib数据可视化基础
第三章 Matplotlib 数据可视化基础
3.1掌握绘图基础语法与常⽤参数
3.1.1掌握pypot基础语法
⼤部分的pyplot图形绘制都遵循⼀个流程,使⽤这个流程可以完成⼤部分图形的绘制。pyplot基本绘图流程主要分为3个部分,如下所⽰。
1. 创建画布与创建⼦图
2. 添加画布内容
3. 保存与显⽰图⽚
#pyplot中的基础绘图语法
import numpy as np
import matplotlib.pyplot as plt
# %matlpotlib inline
matplotlib中subplot
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.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.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.plot(rad,np.sin(rad))#添加y=x^2曲线
plt.plot(s(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.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.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
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.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[:,5],marker='v',c='red')
plt.xlabel('年份')#添加横轴便签
plt.ylabel('⽣产总值(亿元)')#添加纵轴标签
plt.title('2000-2017年各产业各季度国民⽣产总值散点图')#添加图表标题
plt.legend(['第⼀产业','第⼆产业','第三产业'])#添加图例
plt.savefig('./tmp/2000-2017年各产业季度国民⽣产总值散点图.png')
plt.show()
3.2.2绘制折线图
#绘制2000-2017年各季度国民⽣产总值折线图
plt.figure(figsize=(8,7))#设置画布
plt.plot(values[:,0],values[:,2],color='r',linestyle='--')
plt.xlabel('年份')#添加横轴标签
plt.ylabel('⽣产总值(亿元)')#添加纵轴标签
plt.ylim((0,225000))
plt.title('2000-2017年各季度国民⽣产总值折线图')#添加图表标题
plt.savefig('./tmp/2000-2017年各季度国民⽣产总值折线图.png')
plt.show()
#绘制点线图
plt.figure(figsize=(8,7))#设置画布
plt.plot(values[:,0],values[:,2],color='r',linestyle='--',marker='o')
plt.xlabel('年份')#添加横轴标签
plt.ylabel('⽣产总值(亿元)')#添加纵轴标签
plt.ylim((0,225000))
plt.title('2000-2017年各季度国民⽣产总值折线图')#添加图表标题
plt.savefig('./tmp/2000-2017年各季度国民⽣产总值折线图.png')
plt.show()
#plot函数可以⼀次接收多组数据,添加多条折线图
plt.figure(figsize=(8,7))#设置画布
plt.plot(values[:,0],values[:,3],'bs-',
values[:,0],values[:,4],'ro-',values[:,0],values[:,5],'gH--')
plt.xlabel('年份')#添加横轴标签
plt.ylabel('⽣产总值(亿元)')#添加纵轴标签
plt.ylim((0,225000))
plt.title('2000-2017年各季度国民⽣产总值折线图')#添加图表标题
plt.legend(['第⼀产业','第⼆产业','第三产业'])#添加图例
plt.savefig('./tmp/2000-2017年各产业各季度国民⽣产总值折线散点图.png') plt.show()
3.2.3任务实现
1、绘制2000-2017各产业与⾏业的国民⽣产总值散点图
#绘制2000-2017年各产业与⾏业的国民⽣产总值散点图
import numpy as np
# %matplotlib inline(不加这⾏,图⽚不显⽰)
import matplotlib.pyplot as plt
data=np.load('C:/Users/ljy15/Python数据分析与应⽤/Python数据分析与应⽤数据/第3章/任务程序/data/国民经济核算季度数据.npz',allow_pickle=True) name=data['columns']#提取其中的columns数组,视为数据的标签
values=data['values']#提取其中的values数组,视为数据的存在位置
p=plt.figure(figsize=(12,12))#设置画布
#⼦图1
ax1=p.add_subplot(2,1,1)
plt.scatter(values[:,0],values[:,3],marker='o',c='r')#绘制散点图
plt.scatter(values[:,0],values[:,4],marker='D',c='b')#绘制散点图
plt.scatter(values[:,0],values[:,5],marker='v',c='y')#绘制散点图
plt.ylabel('⽣产总值(亿元)')
plt.title('2000-2017年各产业与⾏业各季度国民⽣产总值散点图')
plt.legend(['第⼀产业','第⼆产业','第三产业'])#添加图例
#⼦图2
ax2=p.add_subplot(2,1,2)
plt.scatter(values[:,0],values[:,6],marker='o',c='r')#绘制散点图
plt.scatter(values[:,0],values[:,7],marker='D',c='b')#绘制散点图
plt.scatter(values[:,0],values[:,8],marker='v',c='y')#绘制散点图
plt.scatter(values[:,0],values[:,9],marker='8',c='g')#绘制散点图
plt.scatter(values[:,0],values[:,10],marker='p',c='c')#绘制散点图
plt.scatter(values[:,0],values[:,11],marker='+',c='m')#绘制散点图
plt.scatter(values[:,0],values[:,12],marker='s',c='k')#绘制散点图
plt.scatter(values[:,0],values[:,13],marker='*',c='purple')#绘制散点图
plt.scatter(values[:,0],values[:,14],marker='d',c='brown')#绘制散点图
plt.legend(['农业','⼯业','建筑','批发','交通','餐饮','⾦融','房地产','其他'])
plt.xlabel('年份')
plt.ylabel('⽣产总值(亿元)')
plt.savefig('./tmp/2000-2017年各产业与⾏业各季度国民⽣产总值散点图.png')
plt.show()
2、绘制2000-2017年各产业与⾏业的国民⽣产总值折线图
p1=plt.figure(figsize=(8,7))#设置画布
#⼦图1
ax3=p1.add_subplot(2,1,1)
plt.plot(values[:,0],values[:,3],'b-',
values[:,0],values[:,4],'r-',values[:,0],values[:,5],'g--')
plt.ylabel('⽣产总值(亿元)')#添加纵轴标签
plt.title('2000-2017年各产业与⾏业各季度国民⽣产总值折线图')
plt.legend(['第⼀产业','第⼆产业','第三产业'])#添加图例
#⼦图2
ax4=p1.add_subplot(2,1,2)
plt.plot(values[:,0],values[:,6],'r-',
values[:,0],values[:,7],'b-',values[:,0],values[:,8],'y--',values[:,0],values[:,9],'g:',
values[:,0],values[:,10],'c-',values[:,0],values[:,11],'m-',values[:,0],values[:,12],'k--',
values[:,0],values[:,13],'r:',values[:,0],values[:,14],'b-')
plt.legend(['农业','⼯业','建筑','批发','交通','餐饮','⾦融','房地产','其他'])
plt.xlabel('年份')
plt.ylabel('⽣产总值(亿元)')
plt.savefig('./tmp/2000-2017年各产业与⾏业各季度国民⽣产总值折线⼦图.png')
plt.show()
任务3.3 分析特征内部数据分布与分散状况

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。