书犹药也,善读之可以医愚。|

Lilaaa

园龄:1年粉丝:0关注:0

用sns和matplotlib绘制散点图和拟合线

绘制散点图和拟合线需要用到matplotlib.pyplot和seaborn库,其中sn.lmplot()的参数

seaborn.lmplot(
	x, y, data, hue=None,col=None, row=None, palette=None,col_wrap=None, height=5,aspect=1,markers='o', sharex=True,sharey=True,hue_order=None,col_order=None,row_order=None,legend=True,legend_out=True,x_estimator=None,x_bins=None, x_ci='ci', scatter=True, fit_reg=True,ci=95, n_boot=1000, units=None, order=1, logistic=False,lowess=False,robust=False,logx=False, x_partial=None, y_partial=None,truncate=False, x_jitter=None, y_jitter=None, scatter_kws=None, line_kws=None, size=None
	)
#其中比较常用的是
#x,y:数据字段变量名(如上表,date,name,age,sex为数据字段变量名)
#作用:根据实际数据,x,y常用来指定x,y轴的分类名称
#data: DataFrame,数组或数组列表   
#hue,row:字符串(数据字段变量名)
#作用:hue对数据进行第二次分组(通过颜色区分)
#col:字符串(数据字段变量名)
#作用:通过设置col指定变量名,以该变量名的内容进行分类,
#每一个类别下的数据绘制一个图
#(即该变量名下有多少类值就绘制多少个图,并且排列在一行上)
#palette:调色板名称,list类别或者字典
#作用:用于对数据不同分类进行颜色区别
#col_wrap:int
#作用:将多列跨行显示
#height:标量
#作用:指定图的大小

参数data要求Dataframe格式,我的天气数据是两个列表,把它俩打包成Dataframe

df = pd.DataFrame({
    '日期': date * 2,
    '气温': may + oct,
    '月份': ['May'] * len(may) + ['Oct'] * len(oct)
})
>>>日期  气温   月份
0    1  29  May
1    2  30  May
2    3  32  May
3    4  31  May
4    5  28  May
..  ..  ..  ...
57  27  19  Oct
58  28  20  Oct
59  29  23  Oct
60  30  24  Oct
61  31  25  Oct

[62 rows x 3 columns]

# # -*- coding: utf-8 -*-
# # @Author: Lenovo
import matplotlib.pyplot as plt
import seaborn as sn
import pandas as pd
sn.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['font.family']='sans-serif'
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
may = [ 29,30,32,31,28,
        25,23,22,22,23,
        27,29,29,29,28,
        31,32,32,28,26,
        24,24,29,28,27,
        29,30,33,33,32,35 ]
oct = [ 22,22,24,20,19,
        19,23,22,22,23,
        23,20,22,24,26,
        27,28,25,25,23,
        24,24,22,20,20,
        19,19,20,23,24,25 ]
date = [i for i in range(1,32)]
#把数据转换成dataframe
df = pd.DataFrame({
    '日期': date * 2,
    '气温': may + oct,
    '月份': ['May'] * len(may) + ['Oct'] * len(oct)
})
print(df)
#col是通过设置col指定变量名,以该变量名的内容进行分类
#hue对数据进行第二次分组(通过颜色区分)
#col_wrap将多列跨行显示
#height:指定图的大小
#palette:调色板名称,list类别或者字典,用于对数据不同分类进行颜色区别
sn.lmplot(x='日期', y='气温', hue='月份',col='月份',
          data=df,col_wrap=2, height=4,markers=["o", "*"], palette="Set1")
# 设置标题
plt.suptitle('重庆23年5月&10月气温趋势')
# 调整图例位置
plt.legend(loc='upper right')
# 调整图像布局
plt.tight_layout()
# 展示
plt.show()

本文作者:Lilaaa

本文链接:https://www.cnblogs.com/lila720/p/18216080

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Lilaaa  阅读(115)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起