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里設置參數(shù)做到的,但是你可以調(diào)用seaborn的函數(shù)despine()來去除軸線:
sinplot()
sns.despine()
2.2 軸線偏移
sinplot()
sns.despine(offset=20);
2.3 減去軸線上數(shù)據(jù)外線段
sinplot()
sns.despine(offset=20,trim=True);
2.4 臨時設置圖表樣式
盡管來回切換主題樣式是很簡單的,但是你也可以在with語句里用axes_style()函數(shù)來臨時設置控制布局的參數(shù).這也允許你用不同的主題來制作圖表:
with sns.axes_style("dark"):
plt.subplot(211)
sinplot()
plt.subplot(212)
sns.set_style("ticks")
sinplot(-1)
2.5 重載seaborn樣式的元素
如果你想要自定義seaborn的樣式,你可以用詞典(dictionary)將一系列控制參數(shù)賦值給axes_style()函數(shù)和set_style()函數(shù)的rc參數(shù)里. 注意你只能通過這種方式重載樣式定義的部分.(但是,更高級的set()函數(shù)可以處理包含任意matplotlib參數(shù)的詞典)
如果你想要知道都包含了哪些參數(shù),你可以調(diào)用沒有參數(shù)的函數(shù)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 標簽與圖形粗細調(diào)整
有4種預設好的上下文(context),按相對大小排序分別是:paper, notebook, talk,和poster.缺省的規(guī)模是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()