1. 主题设置
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
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)
sinplot()
效果:
使用seaborn进行主题设置。主题的样式包括:
- darkgrid
- whitegrid
- dark
- white
- ticks
例如,我们设置为darkgrid:
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
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)
sns.set_style("darkgrid") # 也可以用sns.set() ,为seaborn默认主题
sinplot()
效果:
dark主题效果:
whitegrid主题效果:
white主题效果:
ticks主题效果:
2. 详细设置
2.1 移除轴线
样式white和ticks都可以通过去除上方和右方不必要的轴线来得到改善. 而这些是不可能在matplotlib里设置参数做到的,但是你可以调用seaborn的函数despine()来去除轴线:
sinplot()
sns.despine()
2.2 轴线偏移
sinplot()
sns.despine(offset=20);
2.3 减去轴线上数据外线段
sinplot()
sns.despine(offset=20,trim=True);
2.4 临时设置图表样式
尽管来回切换主题样式是很简单的,但是你也可以在with语句里用axes_style()函数来临时设置控制布局的参数.这也允许你用不同的主题来制作图表:
with sns.axes_style("dark"):
plt.subplot(211)
sinplot()
plt.subplot(212)
sns.set_style("ticks")
sinplot(-1)
2.5 重载seaborn样式的元素
如果你想要自定义seaborn的样式,你可以用词典(dictionary)将一系列控制参数赋值给axes_style()函数和set_style()函数的rc参数里. 注意你只能通过这种方式重载样式定义的部分.(但是,更高级的set()函数可以处理包含任意matplotlib参数的词典)
如果你想要知道都包含了哪些参数,你可以调用没有参数的函数sns.axes_style() ,它会返回当前设置:
{'axes.axisbelow': True,
'axes.edgecolor': '.8',
'axes.facecolor': 'white',
'axes.grid': True,
'axes.labelcolor': '.15',
'axes.linewidth': 1.0,
'figure.facecolor': 'white',
'font.family': [u'sans-serif'],
'font.sans-serif': [u'Arial',
u'Liberation Sans',
u'Bitstream Vera Sans',
u'sans-serif'],
'grid.color': '.8',
'grid.linestyle': u'-',
'image.cmap': u'Greys',
'legend.frameon': False,
'legend.numpoints': 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': u'round',
'text.color': '.15',
'xtick.color': '.15',
'xtick.direction': u'out',
'xtick.major.size': 0.0,
'xtick.minor.size': 0.0,
'ytick.color': '.15',
'ytick.direction': u'out',
'ytick.major.size': 0.0,
'ytick.minor.size': 0.0}
例如:
sns.set_style("darkgrid", {"axes.facecolor": "0"})
sinplot()
2.6 标签与图形粗细调整
有4种预设好的上下文(context),按相对大小排序分别是:paper, notebook, talk,和poster.缺省的规模是notebook。
sns.set()
sns.set_context("paper")
#plt.figure(figsize=(8, 6))
sinplot()
sns.set_context("notebook")
sinplot()
sns.set_context("talk")
#plt.figure(figsize=(8, 6))
sinplot()
sns.set_context("poster")
#plt.figure(figsize=(8, 6))
sinplot()
在修改上下文时,你也可以单独修改字体大小。(更高级的set()里也可以这么做)
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5})
sinplot()