一、seaborn库是干啥用的?
画图
Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。
自己用seaborn也用得不深,这里就把常用的总结一下,权当方便自己以后复习。
二、画板主题设置
- 画板有5种主题设置:darkgrid、whitegrid、dark、white、ticks
import seaborn as sns
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
#生成一些测试数据
#不用sns的默认主题,需要自己进行设置
data1 = np.random.randint(1,10,100)
#fig = plt.figure(figsize=(9,6))
plt.hist(data1)
未设置画板时,默认是这个样子
#用sns.set()是默认主题darkgrid
sns.set()
plt.hist(data1)
sns.set_style('darkgrid')
plt.hist(data1)
sns.set_style('whitegrid')
plt.hist(data1)
sns.set_style('white')
plt.hist(data1)
sns.set_style('dark')
plt.hist(data1)
#与white主题的区别是,多了刻度符
sns.set_style('ticks')
plt.hist(data1)
2、设置图表的4种格式:paper、talk、poster、notebook
注意观察图形和坐标轴的变化
data_x = np.linspace(0,2*np.pi,100)
data_y = np.sin(data_x)
sns.set_context("paper")
plt.plot(data_x,data_y)
sns.set_context('talk')
plt.plot(data_x,data_y)
sns.set_context("poster")
plt.plot(data_x,data_y)
#font_scale是设置坐标轴字体的大小,"lines.linewidth"是线型的大小
sns.set_context("notebook", font_scale=3.5, rc={"lines.linewidth": 4.5})
plt.plot(data_x,data_y)
三、调色选择
颜色选择上,我是从使用的角度出发总结记忆的,色彩上,咱们常用的无非三种类型:
1、分类色(需要若干个色彩来代表不同主题,如表示五个省份近几年的GDP变化情况,这时选择的色彩就是分类色)
2、对比色(需要在对象之间做明显比照,如果只有一组对象,直接用分类色就OK了,如果有多组对象,最好是同组对象是同一个色调不同饱和度,如深蓝和浅蓝)
3、渐变色(需要表现一个主题在不同阶段的变化)
1、分类色
分类色选择一般用2种方法,一种是使用color_palette("hls", n)函数,使用hls颜色空间,选择你需要的n中颜色即可;一种是用hls_palette(n, l=0.5, s=0.5)函数,选择你需要的颜色数量n,再自定义l(lightness 亮度和situation饱和度)
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.palplot(sns.color_palette("hls", 8))
sns.palplot(sns.hls_palette(10, l=.7, s=.9))
#使用例子
data_x = np.arange(1,11,1)
data_y = np.random.randint(1,10,10)
pal = sns.color_palette("hls", 10)
sns.barplot(data_x,data_y,palette=pal)
2、对比色
只有2个对象的对比色不用讲了,直接用上面的分类色就行,如果有多组对象,每组有2个对象的,用函数color_palette("Paired",n)定义,n表示n个颜色。
这里有一个疑问没解决,如果有多组,一组有3个或3个以上对象,颜色对比就不会搞了,有会弄的大侠留言指教一下哩。
sns.palplot(sns.color_palette("Paired",8))
a = np.arange(1,9,1)
b = np.random.randint(1,10,8)
#print(b)
sns.barplot(a,b,palette=sns.color_palette("Paired", 8))
3、渐变色
设置渐变色可以用四个函数实现:color_palette("颜色名",n)、cubehelix_palette(n, start=0.5, rot=-0.75)、light_palette("颜色名")、dark_palette("颜色名")
sns.palplot(sns.color_palette("Reds",10))
sns.palplot(sns.color_palette("Blues_r",10))
sns.palplot(sns.cubehelix_palette(8, start=.3, rot=-.15))
sns.palplot(sns.light_palette("green",8))
sns.palplot(sns.dark_palette("purple",8))