【新手0基础7天学会python可视化第二天:seaborn】内附详细代码

前言

大家好呀!昨天我们已经学习了matplotlib,相信大家对可视化作图已经有了一定的了解,今天我们来学习seaborn,话不多说,让我们速速开学!٩( ‘ω’ )و

seaborn简介

Seaborn 是基于 Python 的 matplotlib 库的一个数据可视化库,它提供了更高级、更美观、更简洁的接口,用于绘制统计图形,帮助用户更好地理解数据的分布、关系和趋势。当然了,虽然 Seaborn 提供了强大的绘图功能,但它仍然是基于 matplotlib 的。因此在使用 Seaborn 绘制图形后,仍然可以使用 matplotlib 的函数对图形进行进一步的定制和调整,例如添加标题、修改坐标轴标签、设置图形大小等。
这个是seaborn的官方文档,感兴趣的童鞋可以看一下

导入库

没有下载过seaborn的童鞋先下载一下

pip install seaborn
import seaborn as sns  #导入库

柱状图Bar

import seaborn as sns
plt.figure(figsize=[10,6])
sns.barplot(data=s_count1,x='season',y='count',hue='year',palette='Set1') #palette='Set1'色调配色
plt.xticks(ticks=range(4),labels=['spring','summer','fall','winter']) #自定义 x 轴刻度的位置和标签
plt.tight_layout()  #自动调整子图之间的间距,以确保图形的布局更加美观
plt.show()

在这里插入图片描述

主题设置

可以使用seaborn.set_theme(style=None,palette=None)对主题进行修改,也可以使用seaborn.set_style()和seaborn.set_palette单独修改style和palette

sns.set_theme() #默认主题
sns.set_theme(style="whitegrid", palette="pastel") # 使用whitegrid风格和pastel调色板主题绘制柱状图
sns.set_theme(style="white", palette="Set3") # 使用white风格和Set3调色板主题绘制柱状图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 单独设置style和palette
#sns.set_style(style=None,rc=None)  
#常用style:darkgrid/whitegrid/dark/white/ticks

#sns.set_palette(palette,n_colors=None,desat=None,color_codes=False) 
#常用palette=sns.color_palette()

箱线图Boxplot

基础箱线图

## 基础箱线图
sns.boxplot(data=data,x='season',y='temp',palette='Set1')
plt.tight_layout()
plt.show()

在这里插入图片描述

多维度箱线图

plt.figure(figsize=[10,6])
sns.boxplot(data=data,x='season',y='temp',hue='year',palette='Set3')#区别颜色的属性hue
plt.xticks(ticks=range(4),labels=['spring','summer','fall','winter'])
plt.tight_layout()
plt.show()

在这里插入图片描述

散点图Plot

基础散点图scatterplot

sns.scatterplot(data=data_2011, x="temp", y="windspeed")
plt.show()

在这里插入图片描述

关系散点图replot

颜色的深度表示数量大小

sns.relplot(data=data_2011,
          x = "temp",
          y = "windspeed",
          hue = 'count',
          size = 'count',  #决定散点大小的属性
          palette = 'mako_r', #_r表示翻转,通常在映射数值使用,浅色象征数值小,深色象征数值大
          sizes = (10,200),  #散点尺寸范围
          height = 5,   #图大小
          aspect = 1.5,  #图大小
          alpha = 0.4)  #散点透明度
plt.show() 

在这里插入图片描述

核密度估计图/等高线图 kdeplot()

# 核密度估计图kdeplot
fig,axes = plt.subplots(1,2,figsize=(12,6))
sns.kdeplot(data=data_2011,
           x = 'temp',
           y = 'windspeed',
           cmap = 'Greens', #色谱
            ax = axes[0],   #当前坐标系是第一个
           fill = True)  #是否填充颜色shade

plt.subplots_adjust(wspace=0.2) #调整子图间的宽间距、高间距

#等高线图
sns.kdeplot(data=data_2011,
           x = 'temp',
           y = 'humidity',
          ax = axes[1],  #当前坐标系是第二个
           cmap='Blues') 
plt.show()

在这里插入图片描述

热力图heatmap

关系矩阵热力图

#关系矩阵热力图
corr = data_2011.corr()  #计算全部属性两两之间的皮尔森相关系数
plt.figure(figsize=[11,9])
sns.heatmap(corr,cmap='YlGnBu')
plt.xticks(rotation=30)
plt.show()

在这里插入图片描述

上三角关系矩阵热力图

corr_tri = np.triu(corr,k=0) #np.triu()得到原矩阵的上三角矩阵
#上三角作为热力图的mask,得到更简洁的关系矩阵热力图
plt.figure(figsize=(7,6))
sns.heatmap(corr,mask=corr_tri,cmap='YlGnBu')
plt.xticks(rotation=30)
plt.show()

在这里插入图片描述

组合图表jointplot

组合类型一

#kind: { “scatter” | “kde” | “hist” | “hex” | “reg” | “resid” }
sns.jointplot(data=data,
             x='temp',
             y='windspeed',
             kind='scatter') #scatter散点+直方
plt.show()

sns.jointplot(data=data,
             x='temp',
             y='windspeed',
             kind='kde') #kde 核密度估计(双变量)+核密度估计(单变量)
plt.show()

sns.jointplot(data=data,
             x='temp',
             y='windspeed',
             kind='hex') #hex 蜂巢图+直方
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

组合类型二

plt.rcParams['font.sans-serif'] = 'SimHei' #解决中文显示问题
sns.barplot(x=s_count.index,
           y='2011年',
           data=s_count,
           color='#cccccc',
           label='2011')
sns.lineplot(x=s_count.index,
            y='2012年',
            data=s_count,
            color='red',
            label='2012')
plt.title('2011&2012年用户量组合图')
plt.legend()
plt.show()

在这里插入图片描述
可以明显看到,这样的组合图表会出现错位问题,给出以下两种解决方法。

  1. 解决方法一:用plt画
#会存在错位问题,解决方法1:用plt画
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.bar(s_count.index,
           s_count['2011年'],
           color='#cccccc',
           label='2011')
plt.plot(s_count.index,
            s_count['2012年'],
            color='red',
            label='2012')
plt.title('2011&2012年用户量组合图')
plt.legend()
plt.show()

3.解决方法二:让折线图也从0个位置画起

#会存在错位问题,解决方法2:让折线图也从0个位置画起
sns.barplot(x=[0,1,2,3],
           y='2011年',
           data=s_count,
           color='#cccccc',
           label='2011')
sns.lineplot(x=[0,1,2,3],
            y='2012年',
            data=s_count,
            color='red',
            label='2012')
plt.title('2011&2012年用户量组合图')
plt.legend()
plt.show()

在这里插入图片描述
同时,当组合图中两种类型的图数据差异较大时,就需要使用多个坐标轴,下面介绍使用两个y轴的方法

#两年分两个y轴
#创建多个坐标系对象,用对象.twinx()共享x轴,txiny共享y轴
fig,axl = plt.subplots(figsize=(10,6))

ax1 = sns.barplot(x=[0,1,2,3],
           y='2011年',
           data=s_count,
           color='#cccccc',
           label='2011')

ax2 = ax1.twinx()
ax2 = sns.lineplot(x=[0,1,2,3],
            y='2012年',
            data=s_count,
            color='red',
            label='2012')
ax1.legend(loc=2)
ax2.legend(loc=1)

plt.title('2011&2012年用户量组合图')
plt.legend()
plt.show()

在这里插入图片描述

雷达图

fig = plt.figure()
ax=plt.subplot(111,polar=True) #创建画布和坐标系
ax.plot(angles,value2011,'o-',linewidth=2)#ax.plot表示在极坐标子图上绘制折线图,angles表示每个数据点对应的角度,用于确定数据点在极坐标中的位置。
ax.fill(angles,value2011,alpha=0.25) #透明度为 0.25
ax.set_thetagrids(angles*180/np.pi,feature) #设置极坐标图的角度刻度标签
ax.set_ylim(0.5) #设置极坐标图径向轴(即从原点向外的轴)的范围
ax.grid(True) #显示网格线
plt.title('2011&2012整体情况比较')
plt.show()

在这里插入图片描述

创作不易,亲亲求点赞求收藏呀ヾ(=・ω・=)o
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值