2 散点图Scatterplot(代码下载)

散点图能够显示2个维度上2组数据的值。每个点代表一个观察点。X(水平)和Y(垂直)轴上的位置表示变量的值。研究这两个变量之间的关系是非常有用的。在seaborn中通过regplot和lmplot制作散点图,regplot和lmplot核心功能相近,regplot相对简单点,如果要定制图像更深层次功能,需要使用lmplot。此外也用Pairplot制作多变量图。该章节主要内容有:

  1. 基础散点图绘制 Basic scatterplot
  2. 更改标记参数 Control marker features
  3. 自定义线性回归拟合 Custom linear regression fit
  4. 使用分类变量为散点图着色 Use categorical variable to color scatterplot
  5. 坐标轴范围设置 Control axis limits of plot
  6. 在散点图上添加文本注释 Add text annotation on scatterplot
  7. 自定义相关图 Custom correlogram
#调用seaborn
import seaborn as sns
#调用seaborn自带数据集
df = sns.load_dataset('iris')
#显示数据集
df.head()
.dataframe tbody tr th:only-of-type { vertical-align: middle }
\3cpre>\3ccode>.dataframe tbody tr th { vertical-align: top }
.dataframe thead th { text-align: right }

sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

1.基础散点图绘制 Basic scatterplot

# 使用regplot()函数制作散点图。您必须提供至少2个列表:X轴和Y轴上的点的位置。
# 默认情况下绘制线性回归拟合直线,可以使用fit_reg = False将其删除
# use the function regplot to make a scatterplot 有回归曲线
# scipy<1.2会有warning
sns.regplot(x=df["sepal_length"], y=df["sepal_width"]);
C:\ProgramData\Anaconda3\lib\site-packages\scipy\stats\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval

# Without regression fit 无回归曲线
sns.regplot(x=df["sepal_length"], y=df["sepal_width"], fit_reg=False);

2. 更改标记参数 Control marker features

# 可以散点图自定义颜色,透明度,形状和大小
# Change shape of marker控制散点的形状
sns.regplot(x=df["sepal_length"], y=df["sepal_width"], marker="+", fit_reg=False);

# List of available shapes 可用的形状查看
import matplotlib
all_shapes=matplotlib.markers.MarkerStyle.markers.keys()
all_shapes
dict_keys(['.', ',', 'o', 'v', '^', '<', '>', '1', '2', '3', '4', '8', 's', 'p', '*', 'h', 'H', '+', 'x', 'D', 'd', '|', '_', 'P', 'X', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 'None', None, ' ', ''])
# More marker customization,更具scatter_kws参数控制颜色,透明度,点的大小
sns.regplot(x=df["sepal_length"], y=df["sepal_width"], fit_reg=False, scatter_kws={"color":"darkred","alpha":0.3,"s":20});

3. 自定义线性回归拟合 Custom linear regression fit

# 您可以自定义seaborn提出的回归拟合的外观。在此示例中,颜色,透明度和宽度通过line_kws = {}选项进行控制。
sns.regplot(x=df["sepal_length"], y=df["sepal_width"], line_kws={"color":"r","alpha":0.7,"lw":5});

4. 使用分类变量为散点图着色 Use categorical variable to color scatterplot

  • 每组映射一种颜色 Map a color per group
  • 每组映射一个标记 Map a marker per group
  • 使用其他调色板 Use another palette
  • 控制每组的颜色 Control color of each group
# 每组映射一种颜色 Map a color per group
# Use the 'hue' argument to provide a factor variable hue设置species不同种类的的颜色
sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False);
# Move the legend to an empty part of the plot 需要通过matplotlib更改legend的位置
import matplotlib.pyplot as plt
plt.legend(loc='best');

# 每组映射一个标记 Map a marker per group
# give a list to the marker argument 通过hue设定颜色,markes设定各点的形状
sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False, markers=["o", "x", "1"])
# Move the legend to an empty part of the plot
plt.legend(loc='lower right');

# 使用其他调色板 Use another palette
# Use the 'palette' argument 不同种类设定不同的颜色,颜色类型使用palette设定调色板颜色
sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False, palette="Set2")
# Move the legend to an empty part of the plot
plt.legend(loc='lower right');

# 控制每组的颜色 Control color of each group
# Provide a dictionary to the palette argument 调色盘使用自定义颜色
dict_color=dict(setosa="#9b59b6", virginica="#3498db", versicolor="#95a5a6")
sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False, hue='species', legend=False, palette=dict_color)
# Move the legend to an empty part of the plot
plt.legend(loc='lower right');

5. 坐标轴范围设置 Control axis limits of plot

# basic scatterplot
sns.lmplot( x="sepal_length", y="sepal_width", data=df, fit_reg=False)
# control x and y limits 设置轴的范围,不过需要调用matplotlib.pyplot 模块,通常都是matplotlib和seaborn一起用
plt.ylim(0, 20)
plt.xlim(0, None)
(0, 8.122715679666298)

6. 在散点图上添加文本注释 Add text annotation on scatterplot

  • 添加一个注释 Add one annotation
  • 添加多个注释 Use a loop to annotate each marker
# 添加一个注释 Add one annotation
import pandas as pd
# 制作数据集
df_test = pd.DataFrame({
'x': [1, 1.5, 3, 4, 5],
'y': [5, 15, 5, 10, 2],
'group': ['A','other group','B','C','D']})
# 画散点图
p1=sns.regplot(data=df_test, x="x", y="y", fit_reg=False, marker="o", color="skyblue", scatter_kws={'s':400});
# 添加注释
p1.text(3+0.2, 4.5, "An annotation", horizontalalignment='left', size='medium', color='black', weight='semibold')
Text(3.2, 4.5, 'An annotation')

# 添加多个注释 Use a loop to annotate each marker
# basic plot
p1=sns.regplot(data=df_test, x="x", y="y", fit_reg=False, marker="o", color="skyblue", scatter_kws={'s':400})
# add annotations one by one with a loop
for line in range(0,df_test.shape[0]):
p1.text(df_test.x[line]+0.2, df_test.y[line], df_test.group[line], horizontalalignment='left', size='medium', color='black', weight='semibold')

7. 自定义相关图 Custom correlogram

  • 有回归方程的散点相关图 correlogram with regression
  • 无回归方程的散点相关图 correlogram without regression
  • 在相关图上表示组 Represent groups on correlogram
  • 相关图子图设置 Kind of plot for the diagonal subplots
  • 子图参数设置 parameters adjustment of subplots
# 有回归方程的散点相关图 correlogram with regression
# library & dataset
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('iris') # with regression 有回归方程的散点相关图
# 正对角线上的图表示数据频次的直方图,其他表示散点图
sns.pairplot(df, kind="reg");

# 无回归方程的散点相关图 correlogram without regression
sns.pairplot(df, kind="scatter");

# 在相关图上表示组 Represent groups on correlogram
# 通过hue设定种类,markers不同种类的点的表示方式
# 对角线为核密度图
sns.pairplot(df, kind="scatter", hue="species", markers=["o", "s", "D"], palette="Set2")
<seaborn.axisgrid.PairGrid at 0x21cc5179710>

# 在相关图上表示组 Represent groups on correlogram
# you can give other arguments with plot_kws plot_kws更改散点图的参数
sns.pairplot(df, kind="scatter", hue="species",plot_kws=dict(s=80, edgecolor="white", linewidth=3));

# 相关图子图设置 Kind of plot for the diagonal subplots
# diag_kind有auto,hist,kde选项,hist为直方图,kde为散点图
sns.pairplot(df, diag_kind="hist");

#  子图参数设置 parameters adjustment of subplots
# You can custom it as a density plot or histogram so see the related sections 通过diag_kws调整子图参数
sns.pairplot(df, diag_kind="kde", diag_kws=dict(shade=True, bw=.05, vertical=False));

[seaborn] seaborn学习笔记2-散点图Scatterplot的更多相关文章

  1. SAS学习笔记21 散点图、条形图

  2. [seaborn] seaborn学习笔记0-seaborn学习笔记章节

    seaborn学习笔记章节 seaborn是一个基于matplotlib的Python数据可视化库.seaborn是matplotlib的高级封装,可以绘制有吸引力且信息丰富的统计图形.相对于matp ...

  3. python数据分析入门学习笔记

    学习利用python进行数据分析的笔记&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分 ...

  4. python数据分析入门学习笔记儿

    学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据 ...

  5. 学习笔记之Data Visualization

    Data visualization - Wikipedia https://en.wikipedia.org/wiki/Data_visualization Data visualization o ...

  6. 学习笔记之Data Science

    Data science - Wikipedia https://en.wikipedia.org/wiki/Data_science Data science, also known as data ...

  7. Matplotlib学习笔记(一)

    原   matplotlib学习笔记 参考:Python数据科学入门教程 Python3.6.1 jupyter notebook .caret, .dropup > .btn > .ca ...

  8. 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据

    机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...

  9. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

随机推荐

  1. spring boot项目使用mybatis-plus代码生成实例

    前言 mybatis-plus官方地址 https://baomidou.com mybatis-plus是mybatis的增强,不对mybatis做任何改变,涵盖了代码生成,自定义ID生成器,快速实 ...

  2. day10-习题

    习题 1.Homework01 (1) D -- 没有在别名上加引号(ps:别名的as可以省略) (2) B -- 判断null或非空不能用不等于号 (3) C 2.Homework02 写出查看de ...

  3. Python编程之定时任务(crontab)详解

    引言 python-crontab是python模块,提供了对cron任务的访问,并使得我们可以通过python对crontab文件进行修改. 安装 pip install python-cronta ...

  4. Selenium+Python系列(三) - 常见浏览器操作

    写在前面 上篇文章为大家分享了自动化测试中,常见元素定位的操作. 今天再次读文章,居然忘记了大家特别喜欢的CSS和Xpath定位操作分享,这怎么能行呢? 马上安利,感兴趣的同学去参考下面链接: CSS ...

  5. 学习ASP.NET Core Blazor编程系列九——服务器端校验

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  6. python tcp select 多路复用

    1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 # 文件名:tcpserver.py 4 5 import socket 6 import time 7 ...

  7. jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)(一)

    jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)(一) 线程池介绍 在日常开发中经常会遇到需要使用其它线程将大量任务异步处理的场景(异步化以及提升系统的吞吐量),而在 ...

  8. ubuntu上升级cmake到3.16版本

    本来cmake的旧版本是2.8.12.2,现在更新到3.16.0版本. 需要文件:cmake 3.16.0压缩包,在附件. 1.  查看cmake版本:cmake --version 2.  解压cm ...

  9. 27、求解n阶多项式的值,多项式公式如下

    /* 求解n阶多项式的值,多项式公式如下: Pn(x) = 1 n=0; = x n = 1; = (2n - 1)xPn-1(x) - (n - 1)Pn-2(x) n>=2 */ #incl ...

  10. 1759D(数位变0)

    题目链接 题目大意: 给你两个整数n, m.你需要求一个数,它满足如下条件: 是n的整数倍,且倍数小于m. 你应该使其末尾的0尽可能的多(如100后面有2个零,1020后面有一个零,我们应该输出100 ...