python seaborn画图_Python简单高效的可视化神器——Seaborn

前面我们已经介绍了matplotlib的一些基础和进阶的操作,相信大家已经掌握了。没有掌握的同学快回去学一学!

我们也在文章Python可视化工具概览中介绍了,seaborn其实是在matplotlib基础上进行了更高级的封装,使得一些出图更加的快捷方便而且美观。

seaborn对matplotlib和pandas的数据结构高度兼容 ,非常适合用于数据的可视化分析。seaborn官网:http://seaborn.pydata.org/

好了,下面我们就正式开始了,依旧是从实例开始带大家轻松愉快入门~import seaborn as sns # 导入 seaborn 模块

sns.set() # 使用set() 1步设置默认样式

# 切换回matplotlib:

# sns.reset_orig() ## reset back to the matplotlib

# 默认参数:

seaborn.set(context='notebook', style='darkgrid',

palette='deep', font='sans-serif',

font_scale=1, color_codes=True, rc=None)

其中:context='' 参数控制着默认的画幅大小,分别有 {paper, notebook, talk, poster} 四个值。其中,poster > talk > notebook > paper。

style='' 参数控制默认样式,分别有 {darkgrid, whitegrid, dark, white, ticks},你可以自行更改查看它们之间的不同。

palette='' 参数为预设的调色板。分别有 {deep, muted, bright, pastel, dark, colorblind} 等,你可以自行更改查看它们之间的不同。

font='' 用于设置字体,

font_scale= 设置字体大小,

color_codes= 不使用调色板而采用先前的 'r' 等色彩缩写。

0. appetizer## appetizer:

import seaborn as sns

import matplotlib.pyplot as plt

import numpy as np

sns.set()

x = np.linspace(0,20,8)

y_bar = np.random.randint(5,20,8)

y_line = y_bar

plt.figure(figsize=(8,6))

plt.bar(x, y_bar, color='r')

plt.plot(x, y_line, '-o', color='g')

plt.tick_params(labelsize='15', width=1)

plt.show()

1. lmplotimport seaborn as sns

sns.set()

## load dataset

iris_data = sns.load_dataset('iris') # 导入iris数据集做实验

iris_data.head() # 预览该数据集

# plot:

# lmplot: 可以绘制原始数据、线性拟合线及其置信区间

sns.set(font_scale = 1.6)

sns.lmplot(x='sepal_length', y='sepal_width', hue='species', data=iris_data, height=6, aspect=1.5)

# FYI: https://seaborn.pydata.org/generated/seaborn.lmplot.html

plt.show()

sns.lmplot() 里的 x, y 分别代表横纵坐标的列名。hue= 代表按照 species,即花的类别分类显示,data= 即为数据集。

2. distplot and kdeplot

seaborn.distplot() 主要用于查看单变量的分布状况。## distplot: 单变量分布的可视化

plt.figure(figsize = (8, 6))

sns.set(font_scale = 1.6)

x = np.random.randn(100)

sns.distplot(x,kde=True,rug=True,hist=True)

plt.show()

seaborn.kdeplot() 主要用于绘制单变量或二元变量的核密度估计图,可以查看变量的分布状况。## kdeplot:single variable

plt.figure(figsize = (8, 6))

sns.kdeplot(data=iris_data["sepal_length"], shade=True)

# Labeling of plot

# plt.xlabel('X'); plt.ylabel('Y'); plt.title('Distribution');

plt.show()

############################

## kdeplot:double variables

plt.figure(figsize = (8, 6))

sns.kdeplot(data=iris_data["sepal_length"], data2=iris_data["sepal_width"], shade=True)

# Labeling of plot

# plt.xlabel('X'); plt.ylabel('Y'); plt.title('Distribution');

plt.show()

3. heatmap

seaborn.heatmap() 主要是用于绘制热力图,也就类似于色彩矩阵。常用于相关系数矩阵的可视化,评估变量之间的相关性。## Heatmap

sns.set(font_scale=1.5)

plt.figure(figsize = (10, 10))

# 生成 10x10 的随机矩阵

matrix_data = np.random.randn(10, 10)

plt.title('Heatmap');

sns.heatmap(matrix_data, cmap = plt.cm.RdYlBu_r, fmt='.2f', vmin = -0.6, annot = True, vmax = 0.6)

# FYI: https://seaborn.pydata.org/generated/seaborn.heatmap.html?highlight=heatmap#seaborn.heatmap

plt.show()

4. JointGrid() and jointplot

seaborn.JointGrid() 可以绘制单变量和双变量的组合图。# load data

iris_data = sns.load_dataset('iris')

# 我们将中间的图选为双变量的散点图,而上面和右面选为单变量的直方图

sns.JointGrid(data=iris_data, x='sepal_length', y='sepal_width',height=10).plot(sns.regplot, sns.distplot)

# FYI: https://seaborn.pydata.org/generated/seaborn.JointGrid.html?highlight=jointgrid

plt.show()

seaborn.jointplot()是seaborn.JointGrid()更高级的封装,使用更加灵活。## jointplot:

sns.set(font_scale=1.6)

sns.jointplot(x='sepal_length', y='sepal_width', height=8, data=iris_data, kind="reg")

plt.show()

5. PairGrid and pairplot

seaborn.PairGrid() 可以用来查看两个维度数据之间的关系。## PairGrid

# load data

iris_data = sns.load_dataset('iris')

# plot

sns.PairGrid(data=iris_data, hue='species').map(plt.scatter)

# FYI: https://seaborn.pydata.org/generated/seaborn.PairGrid.html?highlight=pairgrid

plt.show()

seaborn.pairplot()是seaborn.PairGrid()更高级的封装,使用更加灵活。## pairplot

sns.set(style="ticks", color_codes=True,font_scale=1.5)

iris = sns.load_dataset("iris")

g = sns.pairplot(iris,hue='species', height=3, diag_kind='kde',diag_kws=dict(shade=True),plot_kws=dict(s=40))

# FYI: https://seaborn.pydata.org/generated/seaborn.pairplot.html?highlight=pairplot#seaborn.pairplot

6. boxplot## boxplot

## load data:

tips = sns.load_dataset("tips")

## plot:

sns.set(font_scale=1.5)

plt.figure(figsize = (12, 8))

sns.boxplot(x="day", y="total_bill", hue="smoker",data=tips, palette="Set3")

# FYI : https://seaborn.pydata.org/generated/seaborn.boxplot.html?highlight=boxplot#seaborn.boxplot

7. catplot

seaborn.catplot()可以用来查看数值型变量和一个或多个类别型变量的关系。具体内容还是强烈建议大家查阅官网。

其提供的kind参数可以做很多画图类型的选择:# Categorical scatterplots:

stripplot() (with kind="strip"; the default)

swarmplot() (with kind="swarm")

# Categorical distribution plots:

boxplot() (with kind="box")

violinplot() (with kind="violin")

boxenplot() (with kind="boxen")

# Categorical estimate plots:

pointplot() (with kind="point")

barplot() (with kind="bar")

countplot() (with kind="count")# catplot

"""

It can also be useful to combine swarmplot() or striplot() with a box plot or violin plot

to show each observation along with a summary of the distribution:

"""

sns.set(font_scale=1.5)

g = sns.catplot(x="day", y="total_bill", kind="violin", inner=None, data=tips,height=7,aspect=1.6)

sns.swarmplot(x="day", y="total_bill", color="k", size=5, data=tips, ax=g.ax);

你可能感兴趣的:(python,seaborn画图)