fuli2020

2020-07-20   阅读量: 746

seaborn 绘图

扫码加入数据分析学习群

#基本设置


#安装seaborn

pip install seaborn

#创建正弦函数
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 7):
plt.plot(x, np.sin(x + i * .5) * (7- i) * flip)
fig = plt.figure(figsize=(8,6))
sinplot()


#切换seaborn图表风格

seaborn提供了5种默认的风格,包括:“white”,"dark","whitegrid","darkgrid","ticks"


sns.set_style('whitegrid')
fig=plt.figure(figsize=(10,6),facecolor='white')
ax1=fig.add_subplot(1,1,1)
sinplot()


#设置图表坐标轴

seaborn.despine(fig=None,ax=None,top=True,right=True,left=False,bottom=False,offset=None,trim=False)

top,right,left,bottom:布尔型,为True时不显示


sns.set_style('ticks')
fig=plt.figure(figsize=(10,6),facecolor='white')
ax1=fig.add_subplot(1,1,1)
sinplot()
sns.despine(top=False,right=False,offset=20,trim=True)

# offset:与坐标轴之间的偏移

# trim: 为True时,将坐标轴限制在数据最大最小值


#设置局部图表风格

axes_style()

与with配合的用法,设置不同的子图使用不同的风格

sns.set_style('whitegrid')
with sns.axes_style('darkgrid'):
plt.subplot(211)
sinplot()
with sns.axes_style('white'):
plt.subplot(212)
sinplot()


#设置显示比例尺度

set_context()

选择包括:'paper','notebook','talk','poster'

设置绘图背景参数的,它主要来影响标签、线条和其他元素的效果,但不会影响整体的风格

sns.set_style('whitegrid') #整体的风格
sns.set_context('poster') #设置图表里面的内容,标签、线条和其他元素
sinplot()


颜色设置

调色板(默认)

color_palette()

默认6种颜色风格:deep,muted,pastel,bright,dark,colorblind

seaborn.color_palette(palette=None,n_colors=None,desat=None)


current_palette=sns.color_palette(palette='deep')
sns.palplot(current_palette) #查看有哪些颜色


plt.figure(figsize=(12,8))
sns.set_palette('bright') #颜色设置为bright
sinplot() #matplotlib绘图


颜色风格

颜色风格内容:Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spectral, spectral_r, spring, spring_r, summer, summer_r, terrain, terrain_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r


#设置颜色块数与正反顺序

sns.palplot(sns.color_palette('summer',8))

sns.palplot(sns.color_palette('Blue',20))


np.random.seed(5)
data=np.random.normal(size=(20,8))+np.arange(8)/2
fig=plt.figure(figsize=(8,6))
sns.boxplot(data=data,palette=sns.color_palette('summer',8))


设置亮度与饱和度

husl_palette(n_colors,h,s,l) #l:明亮度

hls_palette([n_colors,h,l,s]) #s:饱和度

sns.palplot(sns.hls_palette(20,l=0.5,s=0.8))


fig=plt.figure(figsize=(8,6))

sns.boxplot(data=data,palette=sns.hls_palette(20,l=0.6,s=0.8))


设置颜色线性变化

cubehelix_palette() #按照线性增长计算,设置颜色

sns.palplot(sns.cubehelix_palette(16,gamma=10))
sns.palplot(sns.cubehelix_palette(16,start=2,rot=0.25))
sns.palplot(sns.cubehelix_palette(16,start=2,rot=0,dark=0,light=0.95,reverse=True))
# n_colors:颜色个数
# start:值区间在0-3,开始颜色
# rot:颜色旋转角度
# gamma: 颜色伽马值,越大颜色越暗
# dark,light:值区间0-1,颜色深浅
# reverse:布尔值,默认为False,由浅到深


fig=plt.figure(figsize=(8,6))
sns.boxplot(data=data,palette=sns.cubehelix_palette(16,start=2,rot=-0.75))


#设置颜色渐变

sns.palplot(sns.light_palette('green')) #按照green做浅色调色盘

sns.palplot(sns.color_palette('Greens')) #cmap为Greens风格

sns.palplot(sns.dark_palette('red',reverse=True)) #按照blue做深色调色盘

# reverse 转制颜色

fig=plt.figure(figsize=(8,6))
sns.boxplot(data=data,palette=sns.dark_palette('red',reverse=True))


#创建分散颜色

diverging_palette()


plt.figure(figsize=(8,6))
x=np.arange(25).reshape(5,5)
#创建分散颜色
cmap=sns.diverging_palette(200,20,sep=20,as_cmap=True)
sns.heatmap(x,cmap=cmap)


#单变量分布图

直方图

sns.set_palette('bright')
np.random.seed(10)
x=np.random.normal(size=1000)
sns.distplot(x,bins=100,kde=False,rug=True,color='r',norm_hist=True)#通过(Kernel density estimate(KDE))核密度估计计算出的密度函数

# rug,是否在支撑轴上绘制加固图。


#拟合参数分布

x = np.random.gamma(6, size=200) # gamma分布
sns.distplot(x, bins=20,kde=True, fit=stats.gamma) # 拟合分布:gamma分布


sns.rugplot(x,height = 0.5,color = 'r',alpha = 0.9)
# 数据频率分布图


#双变量核密度估计

iris = pd.read_csv("iris.csv")
setosa = iris.loc[iris.species == "setosa"]
ax = sns.kdeplot(setosa.sepal_width, setosa.sepal_length)


矩阵散点图

sns.pairplot(iris)

sns.pairplot(iris,hue='species',diag_kind='hist') #通过kind画不同的图


g = sns.PairGrid(iris, hue="species") #每个类别分开画
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter) #方法2
g.add_legend()


#分类散点图

tips = pd.read_csv("tips.csv")
tips.head()

# stripplot()
# 按照不同类别对样本数据进行分布散点图绘制
sns.stripplot(x="day", # x → 设置分组统计字段
y="total_bill", # y → 数据分布统计字段
# 这里xy数据对调,将会使得散点图横向分布
data=tips, # data → 对应数据
jitter = 0.1, # jitter → 当点数据重合较多时,用该参数做一些调整,也可以设置间距如:jitter = 0.1
size = 10, edgecolor = 'w',linewidth=1,marker = 'o' # 设置点的大小、描边颜色或宽度、点样式
)




添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
27.6626 3 0 关注作者 收藏

评论(0)


暂无数据

推荐课程