【Python气象处理绘图第五弹--散点回归图】

Python气象处理绘图第五弹–散点回归图



前言

在进行气象数据处理时,除了关注各个指标的时空变化外,常常我们还会利用统计学对于数据之间的关系进行分析。利用python中的seaborn资源包可以进行很多的统计分析。


一、气象格点数据预处理为所需的DataFrame数据

seaborn官网所给出的例子常常用的是dataframe形式的数据,具有多重索引;而气象数据往往以Dataarray形式存储的。因此我们需要对气象格点数据进行预处理,并转换成相应的dataframe。

  1. 数据预处理并降维合并(np.hstack((A,B,C,D),np.vstack((A,B,C,D))
  2. 数据导出为表格形式
t1=pd.DataFrame(t1)
t1.to_excel('m.xlsx',            # 路径和文件名
            sheet_name='tb1',     # sheet 的名字
            float_format='%.2f',  # 保留两位小数
            na_rep='我是空值')
  1. 利用表格详细处理异常值
  2. 新定义dataframe索引,并可以进行不同类型的提取
import numpy as np
import matplotlib.pyplot as plt
df= pd.read_csv('m.csv')
df1 = df.set_index(['RCM','SEASON'])#设置两层索引方式
Y=df1.loc[('CN05','MAM'),'tas']#提取CNO5和MAM对应的tas值
X=df1.loc[('CN05','MAM'),'e']#提取CNO5和MAM对应的e值
x=np.array(X[:])#将series数据转换为array
y=np.array(Y[:])

二、散点回归图绘制

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

2.读入数据

代码如下(示例):

data=sns.load_dataset("tips")
data.head(5) 

seaborn官网示例数据

3.绘制图形

回归

lmplot各种使用方法

  1. 局部加权线性回归(lowess=True)
g = sns.lmplot(x = "total_bill", y = "tip", col='sex',data=data,row='smoker',aspect=1,lowess=True,
            sharey=True,#lowess=True,
            ci=None, palette=None,#lowess=True,
           height=3.5, scatter_kws={"s":2, "alpha":1},line_kws={'lw': 2, 'color': '#00060B'},
          )

在这里插入图片描述

  1. 多项式回归(order=n)
 g = sns.lmplot(x = "total_bill", y = "tip", col='sex',data=data,row='smoker',aspect=1,order=3,
            sharey=True,#lowess=True,
            ci=None, palette=None,#lowess=True,
           height=3.5, scatter_kws={"s":2, "alpha":1},line_kws={'lw': 2, 'color': '#00060B'},
          )

在这里插入图片描述
此处order和lowess两者是互相冲突的两种拟合方式,此外还有logx(对数线性回归模型)、robust(稳健线性回归)、Logistic(逻辑回归)详细参考回归模型图lmplot
3.利用 FacetGrid 结构图个性化绘制多子图Seaborn 可视化进阶之 FacetGrid 结构图

seaborn.FacetGrid(data, *, row=None, col=None, hue=None,col_wrap=None, sharex=True, sharey=True, height=3, aspect=1,palette=None, row_order=None, col_order=None, hue_order=None,hue_kws=None, dropna=False, legend_out=True, despine=True,margin_titles=False, xlim=None, ylim=None, subplot_kws=None, gridspec_kws=None)
官网介绍

sns.set_theme(style="whitegrid",font='Times New Roman',font_scale=1)#设置图片类型格式
with sns.axes_style("white"):
    g = sns.FacetGrid(data, col="sex",  row="smoker"
    )
g.map(sns.regplot, "total_bill", "tip", order=3,scatter_kws={"s":1, "alpha":1},line_kws={'lw': 2, 'color': '#00060B'})

在这里插入图片描述

sns.set_theme(style="whitegrid",font='Times New Roman',font_scale=1)#设置图片类型格式
#https://blog.csdn.net/i_poison_Mind/article/details/115422624
with sns.axes_style("white"):
    g = sns.FacetGrid(data, col="sex",  row="smoker",margin_titles=True)
g.map(sns.regplot, "total_bill", "tip", order=3,scatter_kws={"s":1, "alpha":1},line_kws={'lw': 2, 'color': '#00060B'})
#https://mp.weixin.qq.com/s/nYxmqMmBb41VaiRtY3GCMA
g.set_titles(col_template="{col_name}",
    row_template="{row_name}")
g.set(xticks=[10,20,30,40],yticks=[-5,-2.5,0,2.5,5,7.5,10])#自定义x,y轴标签
g.set(ylabel=None)  # remove the axis label
g.set(ylabel='tip(yuan)')#重新设置y轴title
g.set(xlabel=None)  # remove the axis label
g.set(xlabel='total bill(yuan)')#重新设置x轴title
g.set_axis_labels("Total bill (US Dollars)","Tip")#和前面四行相同效果
g.fig.subplots_adjust(wspace=0.15,hspace=0.1)# 子图和子图之间的间隔
#设置分辨率
g.fig.set_dpi(100)

在这里插入图片描述

总结

以上就是这次对于散点回归图的学习,其中主要有两种方式lmplot和regplot进行绘制,它们使用方法各有不同。绘制完简单的图之后,可以应用facegrid进行个性化绘制图形,拟绘制更加精美的图。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值