简介
什么是Seaborn
Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。
Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
def sinplot(flip=1):
x=np.linspace(0,14,100)#在区间0到14上找100个点
for i in range(1,7):#画六条线
plt.plot(x,np.sin(x+i*.5)*(7-i)*flip)
plt.show()
sinplot()
使用seaborn默认风格
sns.set()
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
def sinplot(flip=1):
x=np.linspace(0,14,100)#在区间0到14上找100个点
for i in range(1,7):#画六条线
plt.plot(x,np.sin(x+i*.5)*(7-i)*flip)
plt.show()
sns.set()#使用seaborn默认风格
sinplot()
与上图相比,有一些变化。
seaborn中有5种主题风格:
- darkgrid
- whitegrid
- dark
- white
- ticks
sns.despine()#去掉不需要的线,默认去掉上面和右面的线
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.violinplot(data=data)
sns.despine(offset=10)
plt.show()
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
def sinplot(flip=1):
x=np.linspace(0,14,100)#在区间0到14上找100个点
for i in range(1,7):#画六条线
plt.plot(x,np.sin(x+i*.5)*(7-i)*flip)
plt.show()
sns.set()
sns.set_context("paper")#参数paper,poster,notebook
plt.figure(figsize=(8,6))
sinplot()
paper
线条粗细不同。
指定字体大小:
调色板
- 颜色很重要
- color_palette()能传入任何Matplotlib所支持的颜色
- color_palette()不写参数则默认颜色
- set_palette()设置所有图的颜色
分类色板:
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
current_palette=sns.color_palette()
sns.palplot(current_palette)
plt.show()
6个默认的颜色循环主题:deep,muted,pastel,bright,dark,colorblind
圆形画板
当你有六个以上的分类要区分时,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持亮度和饱和度不变),这是大多数的当他们需要使用当前默认颜色循环中设置的颜色更多时的默认方案。
最常用的方法是使用hls的颜色空间,这是RGB的一个简单转换。
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
color_palette=sns.color_palette("hls",8)
sns.palplot(color_palette)
plt.show()
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
data=np.random.normal(size=(20,8))+np.arange(8)/2
color_palette=sns.color_palette("hls",8)
sns.boxplot(data=data,palette=color_palette)
plt.show()
hls_palette()函数来控制颜色的亮度和饱和
- l-亮度 lightness
- s-饱和 saturation
sns.palplot(sns.hls_palette(8,l=.7,s=.9))
sns.palplot(sns.color_palette("Paired",8))
使用xkcd颜色来命名颜色
xkcd包含了一套针对随机RGB色的命名,产生了954个可以随时通过xdcd-rgb字典中调用的命名颜色。
import seaborn as sns
import matplotlib.pyplot as plt
plt.plot([0,1],[0,1],sns.xkcd_rgb["pale red"],lw=3)
plt.plot([0,1],[0,2],sns.xkcd_rgb["medium green"],lw=3)
plt.plot([0,1],[0,3],sns.xkcd_rgb["denim blue"],lw=3)
plt.show()
连续色板
色彩随数据变换,比如数据越来越重要,则颜色越来越深。
sns.palplot(sns.color_palette("Blues"))
如果想要翻转渐变,可以在面板名称中添加一个_r
sns.palplot(sns.color_palette("Blues_r"))
cubehelix_palette()调色板
色调线性变换
sns.palplot(sns.color_palette("cubehelix",8))
sns.palplot(sns.cubehelix_palette(8,start=.5,rot=-.75))
light_palette()和dark_palette()调用定制连续调色板
sns.palplot(sns.light_palette("red"))
sns.palplot(sns.dark_palette("blue"))
#反转,由深到浅
sns.palplot(sns.dark_palette("blue",reverse=True))
x,y=np.random.multivariate_normal([0,0],[[1,-.5],[-.5,1]],size=300).T
pal=sns.dark_palette("green",as_cmap=True)
sns.kdeplot(x,y,camp=pal)