seaborn的参考文档:http://seaborn.pydata.org/api.html
设置背景
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
%matplotlib inline # 在matplotlib中显示图片
# seaborn中有五种主题风格
# darkgrid whitegrid dark white ticks
# 可以通过sns.set_style('dark')设置风格
with sns.axes_style('darkgrid'):
plt.subplot(221)
sinplot()
plt.subplot(212)
sinplot()
# sinplot()是之前定义的一个画sin图像的函数
sns.set() # 设定回默认的背景参数
sns.set_context('notebook',font_scale=3.5,rc={'line.linewidth':2.5}) # 指定图中标注的大小,还有线的粗细
sinplot()
调色板
# 调色板
# color_palette()能传入任何Matplotlib所支持的颜色,不写参数则使用默认颜色
# set_palette()设置所有图的颜色
current_platte = sns.color_palette()
sns.palplot(current_platte)
# 有六个默认的颜色循环主题
# 圆形画板:当你有六个以上的类要进行区分的时候,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持亮度和饱和度不变)这是大多数的当他们需要使用比当前默认颜色多的时的默认方案
# 最常用的就是使用hls的空间,这是RGB值的一个简单的转换
sns.palplot(sns.color_palette('hls',8))
# np.arange和range的区别就是np.arange返回的是一个ndarray,并且步长支持float,返回的数值也是float
data = np.random.normal(size=(20,8)) + np.arange(8)/2
sns.boxplot(data=data,palette=sns.color_palette('hls',8))
#sns.boxplot(data=data,palette=sns.hls_palette(8,l=.5,s=.3)) # 通过hls_palette可以调节整个图像的亮度和饱和度
# xkcd包含了一套众包努力的针对随机RGB色的命名,产生了954个可以随机通过xkcd_rgb字典中调用的命名颜色
sns.set()
plt.plot([0,1],[0,1],sns.xkcd_rgb['pale red'],lw=3)
# 连续色板
sns.palplot(sns.color_palette('Blues'))
# 如果想要翻转渐变,可以在面板名称中添加一个_r后缀
sns.palplot(sns.color_palette('Blues_r'))
# light_palette()和dark_palette()调用定制连续调色板
sns.palplot(sns.light_palette('green'))
sns.palplot(sns.dark_palette('purple'))
sns.palplot(sns.light_palette('green',reverse=True))
单变量绘图(distplot)
# 单变量绘图,画直方图
x = np.random.normal(size=100)
sns.distplot(x,bins=20,kde=False)
jointplot
import pandas as pd
mean,cov = [0,1],[(1,.5),(.5,1)]
data = np.random.multivariate_normal(mean,cov,200)
df = pd.DataFrame(data,columns=['x','y'])
sns.jointplot(x='x',y='y',data=df)
# 当数据量很大的时候,不容易看出来变量之间的关系,可以通过hex图来看一下相互之间的关系
with sns.axes_style('white'):
sns.jointplot(x='x',y='y',kind='hex',color='k',data=df)
pairplot
iris = sns.load_dataset('iris')
print(iris)
sns.pairplot(data=iris)
regplot
# 回归分析绘图
tips = sns.load_dataset('tips')
tips.head()
sns.regplot(x='total_bill',y='tip',data=tips)
sns.regplot(x='size',y='tip',data=tips,x_jitter=.05) # 在原始数据上加上抖动,这样的话可以使离散型数据画出的回归图更加精确
stripplot
# 多变量分析绘图
sns.stripplot(x='day',y='total_bill',data=tips,jitter=True) # jitter的作用就是使数据分散一些,否则重叠会很厉害
sns.swarmplot(x='day',y='total_bill',data=tips)
sns.swarmplot(x='day',y='total_bill',hue='sex',data=tips) # 先将数据画出来,然后根据不同性别进行标注
boxplot
# 盒图
sns.boxplot(x='day',y='total_bill',hue='time',data=tips)
violinplot
# 小提琴图
# sns.violinplot(x='day',y='total_bill',hue='time',data=tips)
sns.violinplot(x='day',y='total_bill',hue='time',data=tips,split=True)
sns.violinplot(x='day',y='total_bill',hue='sex',data=tips,split=True)