机器学习(四)机器学习的常用库之Matplotlib

1.Matplotlib库

1.1Matplotlib特点

  • matplotlib是python中最常用的绘图模块
  • matplotlib的Pyplot子模块与MATLAB非常相似,可以方便的绘制各种常见的统计图形,是用户进行探索式数据分析的重要图形工具
  • 可通过各种函数设置图形中的图标题、线条样式、字符形状、颜色、轴属性以及字体属性等

1.2 python绘图(一)

使用的excel文件链接:

链接: https://pan.baidu.com/s/1ZIKRM6YBuDyLBtBsczBHYQ 提取码: z9dx

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']   #解决中文乱码问题
plt.rcParams['axes.unicode_minus']=False

data = pd.read_excel('C:\\Users\\adins\\Desktop\\北京市空气质量数据.xlsx')
data.replace(0,np.NaN)

plt.figure(figsize=(10,5))
plt.plot(data['AQI'],color='black',linestyle='-',linewidth=0.5)
plt.axhline(y=data['AQI'].mean(),color='red',linestyle='-',linewidth=0.5,label='AQI总平均值')
data['年']=data['日期'].apply(lambda x:x.year)
AQI_mean=data['AQI'].groupby(data['年']).mean().values
year = ['2014年','2015年','2016年','2017年','2018年','2019年']
col = ['red','blue','green','yellow','purple','brown']
for i in range(6):
    plt.axhline(y=AQI_mean[i],color=col[i],linestyle='--',linewidth=0.5,label=year[i])
plt.title('2014至2019年AQI时间序列折线图')
plt.xlabel('年份')
plt.ylabel('AQI')
plt.xlim(xmax=len(data),xmin=1)
plt.ylim(ymax=data['AQI'].max(),ymin=1)
plt.yticks([data['AQI'].mean()],['AQI平均值'])
plt.xticks([1,365,365*2,365*3,365*4,365*5],['2014','2015','2016','2017','2018','2019'])
plt.legend(loc='best')
plt.text(x=list(data['AQI']).index(data['AQI'].max()),y=data['AQI'].max()-20,s='空气质量最差日',color='red')
plt.show()

执行结果

 代码解释

%matplotlib inline这一句是IPython的魔法函数,可以在IPython编译器里直接使用,作用是内嵌画图,省略掉plt.show()这一步,直接显示图像。如果不加这一句的话,我们在画图结束之后需要加上plt.show()才可以显示图像。
plt.figure()说明图形的一般特征,如这里的宽高为(10,5)
plt.plot()绘制序列折线图(也可以是其它图形),同时指定图形的颜色、线形、宽度等
plt.axhline()在y轴指定位置画一条平行于x的直线,参数为x时表示在x轴指定位置画一条平行于y的直线
plt.title()指定图的标题
plt.xlabel()、plt.ylabel()指定图的横纵坐标标签
plt.xlim()、plt.ylim()指定横纵坐标的取值范围
plt.yticks()、plt.xticks()指定横纵坐标的刻度并给出刻度标签
plt.legend()在指定的位置上显示图例,'best'表示最优位置
plt.text()在指定x、y坐标处显示指定文字
plt.show()表示本次绘图结束

1.3Python绘图(二) 

import warnings
warnings.filterwarnings(action = 'ignore')
plt.figure(figsize=(10,5))
plt.subplot(2,2,1)
plt.plot(AQI_mean,color='black',linestyle='-',linewidth=0.5)
plt.title('各年AQI均值折线图')
plt.xticks([0,1,2,3,4,5],['2014','2015','2016','2017','2018','2019'])
plt.subplot(2,2,2)
plt.hist(data['AQI'],bins=20)
plt.title('AQI直方图')
plt.subplot(2,2,3)
plt.scatter(data['PM2.5'],data['AQI'],s=0.5,c='green',marker='.')
plt.title('PM2.5与AQI散点图')
plt.xlabel('PM2.5')
plt.ylabel('AQI')
plt.subplot(2,2,4)
tmp=pd.value_counts(data['质量等级'],sort=False)       #等同tem=data['质量等级'].value_counts()
share = tmp/sum(tmp)
labels = tmp.index
explode = [0,0.2,0,0,0,0.2,0]
plt.pie(share,explode=explode,labels=labels,autopct='%3.1f%%',startangle=180,shadow=True)
plt.title('空气质量整体情况的饼图')

执行结果

 代码解释

plt.subplot(2,2,1)将绘图区域分为两行两列,下一幅图绘制在第一单元内
plt.subplot(2,2,2)下一幅图绘制在第二单元内
plt.hist(data['AQI'],bins=20)绘制直方图,分为20个柱形条显示
plt.scatter(data['PM2.5'],data['AQI'],s=0.5,c='green',marker='.')绘制散点图,s指定大小,c指定颜色,marker指定形状
plt.pie(share,explode=explode,labels=labels,autopct='%3.1f%%',startangle=180,shadow=True)
绘制饼图,share指定各成分占比,explode指定据饼图中心的距离(突出显示),labels指定各成分标签,autopct指定数据显示格式,startangle指定第一个成分的排放起始位置,shadow=True表示使用阴影

1.4python绘图(三)

 上图的子图中有重叠的部分,可以选择调大图形来避免重叠,也可以像下面一样设置边界距离

fig,axes= plt.subplots(nrows=2,ncols=2,figsize=(10,5))
axes[0,0].plot(AQI_mean,color='black',linestyle='-',linewidth=0.5)
axes[0,0].set_title('各年AQI均值折线图')
axes[0,0].set_xticks([0,1,2,3,4,5])
axes[0,0].set_xticklabels(['2014','2015','2016','2017','2018','2019'])

axes[0,1].hist(data['AQI'],bins=20)
axes[0,1].set_title('AQI直方图')

axes[1,0].scatter(data['PM2.5'],data['AQI'],s=0.5,c='green',marker='.')
axes[1,0].set_title('PM2.5与AQI散点图')
axes[1,0].set_xlabel('PM2.5')
axes[1,0].set_ylabel('AQI')

axes[1,1].pie(share,explode=explode,labels=labels,autopct='%3.1f%%',startangle=180,shadow=True)
axes[1,1].set_title('空气质量整体情况的饼图')

fig.subplots_adjust(hspace=0.5)
fig.subplots_adjust(wspace=0.5)

执行结果

代码解释
fig,axes= plt.subplots(nrows=2,ncols=2,figsize=(10,5))将(10,5)大小的图分为两行两列,并获得两个对象,fig对象设置整个图的特征,axes对象对应各个单元格对象
通过图形单元索引的方式指定绘图单元,axes[0,0]代表第一单元格,axes[0,1]代表第二单元格
单元格对象的图标题、标签、刻度等需要由set_title、set_xlabel、set_xticks、set_xticklabels设置
fig.subplots_adjust(hspace=0.5)
fig.subplots_adjust(wspace=0.5)调整各图形的行列距离

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值