python seaborn 散点图矩阵_python数据可视化之seaborn

seaborn

importmatplotlib as mplimportmatplotlib.pyplot as pltimportnumpy as npimportpandas as pd#解决坐标轴刻度负号乱码

plt.rcParams['axes.unicode_minus'] =False#解决中文乱码问题

plt.rcParams['font.sans-serif'] = ['Simhei']

1、Seaborn基础

1.1 关于 matplotlib 与 seaborn

要实现复杂的数据可视化,要写大量的样板代码

Matplotlib比Pandas更早开发,要使用Matplotlib实现DataFrame的数据可视化,相对Seaborn比较麻烦

Seaborn是在Matplotlib基础上开发的一套API,为图形样式和颜色设置提供合理的选择,同时为很多常用的统计图形提供专门的高级函数调用

Pandas与DataFrame有机结合,是使用Matplotlib时很好的附加工具

1.2 风格选择

使用 seaborn 画图之前的图样:

importmatplotlib.pyplot as pltimportnumpy as npdefhehe():

plt.rcParams['font.sans-serif'] = ['Simhei'] #解决中文乱码问题

x=np.linspace(0.05,10,100)

y_01=np.cos(x)

y_02=np.sin(x)

plt.plot(x,y_01,ls="-",label=r"$\cos(x)$")

plt.plot(x,y_02,ls="-",label=r"$\sin(x)$")

plt.legend(loc="lower left",title="函数",) #或者写loc=3

plt.title("正弦函数和余弦函数的折线图");

hehe()

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第1张图片

seaborn 的风格,它们分别是:

darkgrid(默认)

whitegrid

dark

white

ticks

sns.set() 可以用来重置 Seaborn 默认的主题

运行下面的 sns.set() 语句之后,会将接下来运行的 Matplotlib 绘图设置成 Seaborn 默认的主题,重新运行上面的图:

importseaborn as sns

sns.set()

hehe()

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第2张图片

如果想改变 Seaborn 主题,可以使用以下语句:

axes_style()

set_style() 比如我们又想将默认的 darkgrid 主题改成 ticks :

sns.set_style("whitegrid")

hehe()

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第3张图片

1.3 自定义坐标轴

如果不想要轴脊柱(图形边框的上下左右四条轴),可以通过 sns.despine() 来移除(先画图后移除,默认移除右和上两条轴):

hehe()

sns.despine()#sns.despine(left=True, bottom=True, top=False, right=False)

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第4张图片

offset 参数可以设置图形距离原地的距离:

hehe()

sns.despine(offset=10); #绝对距离,以点为单位

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第5张图片

1.4 自定义绘图元素比例

Seaborn 有一套的参数可以控制绘图元素的比例,通过 sns.set_context() 设置,有四个预置环境,按大小从小到大排列分别为:paper < notebook < talk < poster,其中,默认是 notebook

sns.set_context("talk")

hehe()

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第6张图片

2、数据集分布的可视化

importnumpy as npimportpandas as pdfrom scipy importstats, integrateimportmatplotlib.pyplot as pltimportseaborn as sns

sns.set(color_codes=True)

np.random.seed(100) #随机数生成种子

2.1 单变量分布图 sns.distplot()

在 Seaborn 中,快速观察单变量分布的最方便的方法就是使用 distplot() 函数,默认会使用柱状图(histogram)来绘制

bin:直方图在横坐标的数据值范围内均等分的形成一定数量的数据段数量

hist:bool,可选,是否绘制(标准化)直方图

kde:bool,可选,是否绘制核密度估计曲线(高斯)

rug : bool, 可选,在每个观察点上的垂直小标签

x = np.random.normal(size=100)

sns.distplot(x);#如果运行代码出现报错,那么运行pip install --upgrade scipy

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第7张图片

x = np.random.normal(size=100)

sns.distplot(x, hist=True,bins=30,kde=False, rug=True);#kde, 是否画核密度曲线#rug,是否将数组中的数据点画出来作为坐标轴的刻度线

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第8张图片

2.2 二元分布图

2.2.1 散点图 sns.jointplot()

在 Seaborn 中,对于双变量分布的可视化,最简单的方法就是使用 joinplot() 函数,它能够创建一个多面板图形来展示两个变量之间的联合关系,以及每个轴上单变量的分布情况

x = np.random.rand(100)

y= np.random.rand(100) #从0到1之间,生成100个

df= pd.DataFrame({"A":x, "B":y})

sns.jointplot(x="A", y="B", data=df);

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第9张图片

2.2.2 Hexbin 图

对于相对较大的数据集进行绘图,使用 “hexbin” 图最好,它展示了落在六角形箱内的观测量

“hexbin” 图可以通过 matplotlib 的 plt.hexbin 函数绘制

“hexbin” 图也可以作为 jointplot 的一种类型参数使用,设置 sns.jointplot() 内的参数 kind="hex"

使用白色背景的时候视觉效果最好

sns.axes_style("white")

x= np.random.rand(200)

y= x+np.random.rand(200)

sns.jointplot(x=x, y=y, kind="hex", color="k");

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第10张图片

2.2.3 多元矩阵图 sns.pairplot()

当需要对多维数据集进行可视化时,可以使用矩阵图 sns.pairplot()

导入鸢尾花数据集:

iris = sns.load_dataset("iris")

iris.head()

python seaborn 散点图矩阵_python数据可视化之seaborn_第11张图片

绘制多元矩阵图:

sns.pairplot(iris);

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第12张图片

3、其他常见图形

散点图

sns.scatterplot(x="字段名A", y="字段名B", data=“某DataFrame”)

sns.scatterplot(x="petal_length", y="petal_width", data=iris);

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第13张图片

线图

sns.lineplot(x="字段名A", y="字段名B", data="某DataFrame")

sns.lineplot(x="petal_length", y="petal_width", data=iris);

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第14张图片

柱状图

sns.barplot(x="字段A", y="字段B", data="某DataFrame")

sns.barplot(x="petal_length", y="petal_width", data=iris);

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第15张图片

计数图

sns.countplot(x="字段A", data="某DataFrame")

sns.countplot(x="petal_length", data=iris);

结果为:

python seaborn 散点图矩阵_python数据可视化之seaborn_第16张图片

你可能感兴趣的:(python,seaborn,散点图矩阵)