用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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步