常用于调色板的函数及其作用
hls_palette 用于控制调色板颜色的亮度和饱和度
xkcd_palette 使用 xkcd 颜色中的颜色名称创建调色板
cubehelix_palette 用于创建连续调色板
light_palette 用于创建颜色从浅色到深色的连续调色板
dark_palette 用于创建颜色从深色到深色混合的连续调色板
choose_light_palette 启动交互式小部件以创建浅色连续调色板
choose_dark_palette 启动交互式小部件以创建深色连续调色板
diverging_palette 用于创建离散调色板
choose_diverging_palette 启动交互式小部件选择不同的调色板,与 diverging_palette 函数功能相对应
color_palette 用于返回定义调色板的颜色列表或连续颜色图
set_palette 用于设置调色板,为所有图设置默认颜色周期
导入不同的颜色主题 seaborn 默认颜色周期及不同颜色的主题
sns.palplot(sns.color_palette())
默认颜色主题有 deep, muted, bright, dark, colorblind 等,默认为 deep
palette = sns.color_palette('muted')
sns.palplot(palette)
HLS 颜色空间(H 表示色调,L 表示亮度,S 表示饱和度)
可由 RGB 颜色空间经过简单转换得到(R 代表红色,G 代表绿色,B 代表蓝色)
sns.palplot(sns.color_palette('hls',8)) #8表示色块格数
使用 hls_palette 函数控制颜色的亮度和饱和度
`sns.palplot(sns.hls_palette(8, l=.3,s=.8)) # l 控制亮度,S 控制饱和度`
husl 可以使得调色板的亮度和饱和度在视觉上更加一致
sns.palplot(sns.color_palette('husl',8))
使用 xkcd 颜色
可以通过 xkcd_rgb 字典装饰调用颜色,也可以通过 xkcd_palette 函数自定义调色板
sns.set()
x = np.arange(1,10,2)
y1 = x + 1
y2 = x + 3
y3 = x + 5
plt.plot(x,y1,sns.xkcd_rgb['pale red'],lw=3)
plt.plot(x,y2,sns.xkcd_rgb['medium green'],lw=3)
plt.plot(x,y3,sns.xkcd_rgb['denim blue'],lw=3)
plt.title('线条颜色示例')
plt.show()
# 自定义调色板
colors = ['windows blue','amber','greyish','faded green','dusty purple']
sns.palplot(sns.xkcd_palette(colors))
绘制连续调色板、亮度反转及切换面板
# 绘制连续调色板、亮度反转及切换面板
sns.palplot(sns.color_palette('YlOrRd'))
sns.palplot(sns.color_palette('YlOrRd_r')) # 在调色板名称后缀添加' _r '可以实现亮度反转
sns.palplot(sns.color_palette('YlOrRd_d')) # 在调色板名称后缀添加' _d '可绘制连续调色板、亮度反转及切换面板
# 连续调色板名称及渐变顺序
# YlOrRd - 黄橙红 Purples - 紫 Greys - 灰色
# YlOrBr - 黄橙棕 PuRd - 紫红 Greens - 绿
# YlGnBu - 黄绿蓝 PuBuGn - 紫蓝绿 GuBu - 绿蓝
# YlGn - 黄绿 PuBu - 紫蓝 BuP - 蓝紫
# Reds - 红 OrRd - 橙红 BuGn - 蓝绿
# RdPu - 红紫 Oranges - 橙 Blues - 蓝
使用 cubehelix_palette 函数生成调色板对象并传入绘图函数
sns.palplot(sns.cubehelix_palette(8,start=1,rot=0))
x, y = np.random.multivariate_normal([0,0],[[1,-.5],[-.5,1]],size=300).T
cmap = sns.cubehelix_palette(as_cmap=True) # 生成调色板对象
sns.kdeplot(x=x, y=y, cmap=cmap, shade=True)
plt.title('连续调色板')
plt.show()
自定义连续调色板并传入绘图函数
#自定义连续调色板并传入绘图函数
pal = sns.dark_palette((200,80,60),input='husl',reverse=True,as_cmap=True)
sns.kdeplot(x=x, y=y, cmap=pal)
plt.title('自定义连续调色板')
plt.show()
Color Brewer 库中的离散调色板
sns.palplot(sns.color_palette('BrBG',9))
sns.palplot(sns.color_palette('RdBu_r',9))
coolwarm 离散调色板
sns.palplot(sns.color_palette('coolwarm',9))
diverging_palette 函数的常用参数及其说明
h_neg 接收 0~359 的 float。表示调色板的正范围的色调。无默认值
h_pos 接收 0~359 的 float。表示调色板的负范围的色调。无默认值
s 接收 0~100 的 float。表示两个范围的色调饱和度。默认值为 75
l 接收 0~100 的 float。表示两个范围的色调亮度。默认值为 50
n 接收int。表示调色板颜色数目。默认值为 6
center 接收str。表示调色板中心明暗,可选light、dark。默认为 light
as_cmap 接收bool。表示是否返回 Matplotlib 颜色映射对象。默认为 False
使用 diverging_palette 函数自定义离散调色板
sns.palplot(sns.diverging_palette(240,10,n=7))
sns.palplot(sns.diverging_palette(150,275,s=80,l=55,n=7))
创建中间值是暗色的调色板
sns.palplot(sns.diverging_palette(250,15,s=75,l=40,n=7,center='dark'))
通过 sep 参数控制中间区域渐变宽度
sns.palplot(sns.diverging_palette(150,275,s=80,l=55,n=7,sep=80))
使用 set_palette 函数设置调色板
x = np.arange(1,10,2)
y1 = x + 1
y2 = x + 3
y3 = x + 5
def showLine(flip=1):
sns.lineplot(x=x,y=y1)
sns.lineplot(x=x,y=y2)
sns.lineplot(x=x,y=y3)
showLine()
plt.title('默认调色板')
plt.show()
sns.set_palette('YlOrRd_d')
showLine()
plt.title('使用set_palette函数设置调色板')
plt.show()
sns.set()
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
pic = plt.figure(figsize=(8,4))
with sns.color_palette('PuBuGn_d'):
pic.add_subplot(1,2,1)
showLine()
plt.title('使用 color_palette函数设置调色板')
pic.add_subplot(1,2,2)
showLine()
plt.title('默认调色板')
plt.show()
在 seaborn 库中,可使用 heatmap 函数绘制热力图。
heatmap 函数的主要参数及说明
data 绘制可转换为 ndarray 的二维矩阵数据集。表示用于绘图的数据集。无默认值
vmin,vmax 接收颜色映射的值的范围。默认为None
cmap 接收颜色映射或颜色列表。表示数字到颜色空间的映射。默认为 None
center 接收float。表示以0为中心发散颜色。默认为 None
robust 接收bool。如果为 True 且 vmin 参数 vmax 参数为 None,则使用分位数表示映射范围。默认为False
annot 接收bool或矩阵数据。表示是否在每个单元格中显示数值。默认为 None
fmt 接收str。表示添加注释时使用的字符串格式代码。默认为 .2g
linewidths 接收float。表示划分每个单元格的线宽。默认为0
linecolor 接收str。表示划分每个单元格的线条颜色。默认为white
square 接收bool。表示十分使每个单元格为方形。默认为 False
boston = pd.read_csv('boston_house_prices.csv',encoding='gbk')
plt.rcParams['axes.unicode_minus'] = False
corr = boston.corr()
sns.heatmap(corr)
plt.title('特征矩阵热力图')
plt.show()
绘制热力图
添加数据标记,设置函数 annot=True,辅助增强显示效果
plt.figure(figsize=(10,10))
sns.heatmap(corr,annot=True,fmt='.2f')
plt.title('特征矩阵热力图')
plt.show()