seaborn学习笔记(一):seanborn初识
1 引言¶
在两年前,写了一些列关于matplotlib数据可视化的博客,matplotlib可定制化程度高、功能强大,但不得不说,作图过程也是十分繁琐,需要配置的参数众多。在探索数据时,我们更希望的是将工作中心集中在数据本身,通过简单的代码实现数据可视化,而不是可视化绘图本身。所以需要一个更高层次的库,对matplotlib进行分组,实现简单作图,这个库就是seaborn。
Seaborn是一个在Python中制作有吸引力和信息丰富的统计图形的库。它建立在matplotlib之上,并与PyData堆栈紧密集成,包括支持来自scipy和statsmodels的numpy和pandas数据结构和统计例程。 Seaborn旨在将可视化作为探索和理解数据的核心部分。绘图函数对包含整个数据集的数据框和数组进行操作,并在内部执行必要的聚合和统计模型拟合以生成信息图。如果matplotlib“试图让事情变得简单容易和难以实现”,seaborn会试图使一套明确的方案让事情变得容易。 Seaborn可以认为是对matplotlib的补充,而不是它的替代品。在数据可视化方面能够很好的表现。
2 seaborn自带数据集¶
import seaborn as sns
import matplotlib as plt
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False #这两行需要手动设置
seaborn本身提供一些数据库,用于seaborn学习使用,通过sns.get_dataset_names()
可以查看seaborn所支持的数据库。(注意,seaborn查看数据和加载数据都需要访问外网,速度较慢)
sns.get_dataset_names()
通过sns.load_dataset()
方法指定数据集名称可以加载数据,如下所示为加载“tips”数据集。加载出来的数据以pandas中DataFrame对象实例保存。
df = sns.load_dataset("tips")
type(df)
df.head(2)
style = {'figure.facecolor': 'grey',
'axes.labelcolor': '.15',
'xtick.direction': 'out',
'ytick.direction': 'out',
'xtick.color': '.15',
'ytick.color': '.15',
'axes.axisbelow': True,
'grid.linestyle': '-',
'text.color': '.15',
'font.family': ['sans-serif'],
'font.sans-serif': ['Arial',
'DejaVu Sans',
'Liberation Sans',
'Bitstream Vera Sans',
'sans-serif'],
'lines.solid_capstyle': 'round',
'patch.edgecolor': 'w',
'patch.force_edgecolor': True,
'image.cmap': 'rocket',
'xtick.top': False,
'ytick.right': False,
'axes.grid': True,
'axes.facecolor': '#EAEAF2',
'axes.edgecolor': 'white',
'grid.color': 'white',
'axes.spines.left': True,
'axes.spines.bottom': True,
'axes.spines.right': True,
'axes.spines.top': True,
'xtick.bottom': False,
'ytick.left': False}
sns.set_theme(style=style)
_ = sns.relplot(x="total_bill", y="tip", data=df)
sns.set_theme(style='darkgrid')
_ = sns.relplot(x="total_bill", y="tip", data=df)
3.1.3 whitegrid¶
sns.set_theme(style='whitegrid')
_ = sns.relplot(x="total_bill", y="tip", data=df)
3.1.4 dark¶
sns.set_theme(style='dark')
_ = sns.relplot(x="total_bill", y="tip", data=df)
3.1.5 white¶
sns.set_theme(style='white')
_ = sns.relplot(x="total_bill", y="tip", data=df)
3.1.6 ticks¶
sns.set_theme(style='ticks')
_ = sns.relplot(x="total_bill", y="tip", data=df)
context = {'font.size': 15.0,
'axes.labelsize': 'medium',
'axes.titlesize': 'large',
'xtick.labelsize': 'medium',
'ytick.labelsize': 'medium',
'legend.fontsize': 'medium',
'axes.linewidth': 0.8,
'grid.linewidth': 0.8,
'lines.linewidth': 1.5,
'lines.markersize': 6.0,
'patch.linewidth': 1.0,
'xtick.major.width': 0.8,
'ytick.major.width': 0.8,
'xtick.minor.width': 0.6,
'ytick.minor.width': 0.6,
'xtick.major.size': 3.5,
'ytick.major.size': 3.5,
'xtick.minor.size': 2.0,
'ytick.minor.size': 2.0,
'legend.title_fontsize': None}
sns.set_theme(context=context)
_ = sns.relplot(x="total_bill", y="tip", data=df)
并不是每次对context进行设置都要传递一个dict对每一个图形属性进行配置,为方便使用,在seaborn提供几种默认的context选项,包括:
3.2.2 notebook(默认值)¶
sns.set_theme(context='notebook')
_ = sns.relplot(x="total_bill", y="tip", data=df)
3.2.3 paper¶
sns.set_theme(context='paper')
_ = sns.relplot(x="total_bill", y="tip", data=df)
3.2.4 talk¶
sns.set_theme(context='talk')
_ = sns.relplot(x="total_bill", y="tip", data=df)
3.2.5 poster¶
sns.set_theme(context='poster')
_ = sns.relplot(x="total_bill", y="tip", data=df)
sns.set_theme(palette="husl")
sns.color_palette("husl", 6)
# sns.color_palette("flare", as_cmap=True)
# sns.set_theme(palette=sns.color_palette("pastel"))
_ = sns.relplot(x="total_bill", y="tip", hue='size', data=df, palette='Spectral')
4 seaborn框架结构¶
seaborn将主要绘图功能方法分为图级和轴级两个层次,如下图所示。图级方法包括relplot、displot、catplot,下属分别包含对应的特定图表绘制函数,即轴级方法。后续博客将围绕三个图级方法逐个介绍各种绘图方法。
作者:奥辰
微信号:chb1137796095
Github:https://github.com/ChenHuabin321
欢迎加V交流,共同学习,共同进步!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。