seaborn官方文档学习笔记-第一章(图形美化及样式控制)

        第一章:控制图表样式

        本系列笔记是基于seaborn0.8.1版本说明文档进行的翻译。Matplotlib具有高度的可定制性,但很难知道需要调整哪些参数才能实现我们所希望看到的效果。 Seaborn带有一些定制的主题和一个控制matplotlib数字外观的高级界面。

%matplotlib inline
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
np.random.seed(sum(map(ord, "aesthetics")))

        让我们定义一个简单函数来绘制一些偏移正弦波,这将帮助我们看到我们可以调整的不同风格参数。

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)

        这是matplotlib默认情况下的图形效果:

sinplot()

        要切换到seaborn默认值,只需调用set()函数。

sns.set()
sinplot()

(请注意,在0.8后的seaborn版本中,set()必须被显式调用)

        Seaborn将matplotlib参数分成两个独立的组。第一组设定图形的艺术风格,第二组设置图形的各种参数,以便它可以很容易地组合成不同风格的图形。

        操作这些参数的接口是两对函数。 要控制样式,请使用axes_style()和set_style()函数。 要扩展绘图,请使用plotting_context()和set_context()函数。 在这两种情况下,第一个函数返回一个参数字典,第二个函数设置matplotlib默认值。

        Seaborn图形样式
         有五个预设seaborn主题darkgrid whitegrid dark white , and  ticks,它们都适合不同的应用和个人喜好。 默认主题是darkgrid。 如上所述,网格有助于将图作为定量信息的查找表,白色灰色有助于防止网格与代表数据的线条竞争。 whitegrid的主题是相似的,但它更适合用重要数据元素绘制:
sns.set_style("whitegrid")
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.boxplot(data=data);
sns.set_style("dark")
sinplot()

        有时候你可能想要给这些图像增加一些额外的结构,这就是ticks派上用场的地方:
sns.set_style("ticks")
sinplot()

        移除轴样式

        white和ticks风格都可以从移除顶部和右边坐标轴中受益,通过matplotlib参数来做到这一点是不可能的,但是你可以调用seaborn函数despine()去除它们:

sinplot()
sns.despine()

        一些图的边框可以通过数据移位,当然调用despine()也能做同样的事。当边框没有覆盖整个数据轴的范围的时候,trim参数会限制留存的边框范围。

f, ax = plt.subplots()
sns.violinplot(data=data)
sns.despine(offset=10, trim=True);# offset 两坐标轴离开距离;

        你也可以通过往despine()中添加参数去控制边框

sns.set_style("whitegrid")
sns.boxplot(data=data, palette="deep")
sns.despine(left=True)


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

从plot()函数中移除顶部或右边的边框

        临时设定图形样式
        虽然来回切换非常容易,但sns也允许用with语句中套用axes_style()达到临时设置参数的效果(仅对with块内的绘图函数起作用)。这也允许创建不同风格的坐标轴。
with sns.axes_style("darkgrid"):
    plt.subplot(211)
    sinplot()
plt.subplot(212)
sinplot(-1)

        重写seaborn风格的元素
        如果您想要定制seanborn的样式,可以将参数字典传递给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': ['sans-serif'],
 'font.sans-serif': ['Arial',
  'DejaVu Sans',
  'Liberation Sans',
  'Bitstream Vera Sans',
  'sans-serif'],
 'grid.color': '.8',
 'grid.linestyle': '-',
 'image.cmap': 'rocket',
 'legend.frameon': False,
 'legend.numpoints': 1,
 'legend.scatterpoints': 1,
 'lines.solid_capstyle': 'round',
 'text.color': '.15',
 'xtick.color': '.15',
 'xtick.direction': 'out',
 'xtick.major.size': 0.0,
 'xtick.minor.size': 0.0,
 'ytick.color': '.15',
 'ytick.direction': 'out',
 'ytick.major.size': 0.0,
 'ytick.minor.size': 0.0}
        你可以试试不同种类的参数效果
sns.set_style("darkgrid", {"axes.facecolor": ".9"})
sinplot()

        通过 plotting_context() 和 set_context() 调整绘图元素
        另一组参数控制绘图元素的规模,这应该让您使用相同的代码来制作适合在较大或较小的情节适当的场景中使用的情节。
        首先,可以通过sns.set()重置参数。
sns.set()
        四种预设,按相对尺寸的顺序(线条越来越粗),分别是paper,notebook, talk, and poster。notebook的样式是默认的,上面的绘图都是使用默认的notebook预设。
sns.set_context("paper")
sinplot()

sns.set_context("talk")
sinplot()

sns.set_context("poster")
sinplot()

        大多数你现在知道的样式函数应该转换到context函数。
        类似的,还可以使用其中一个名称来调用set_context()来设置参数,您可以通过提供参数值的字典来覆盖参数。
        通过更改context还可以独立地扩展字体元素的大小。(这个选项也可以通过顶级set()函数获得)。
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5})
sinplot()

        类似地(尽管它可能用处不大),也可以使用with嵌套语句进行临时的设置。
        样式和上下文都可以用set()函数快速地进行配置。这个函数还设置了默认的颜色选项,在下一节将详细介绍这一功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值