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. 【nginx】使用 nginx 时,使用 sub_filter 注入 js 代码,例如 google analysis 等

    目录 1. 创建 GA 1 2. 注入代码2 结果 网站 F12 GA 控制台 Reference 在一项工作中,已经将内网的一个网站通过 二级域名 + nginx + frp 的方式映射到公网.网站 ...

  2. 前端ajax发送post 请求 json格式 springMVC报错415

    如标题所示 后端填坑日记 在使用springMVC的时候发现 后端使用@RequestBody注解会报错415 不支持的媒体类型 相信很多小伙伴都遇到过或者正在面临这个报错 提示错误:The serv ...

  3. JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象

    文章目录 1.工厂方法创建对象 1.1 代码块 1.2.测试结果 2.原型对象 2.1 代码 2.2 测试结果 3.toString 3.1 代码 3.2 测试结果 4.数组 4.1 代码 5.字面量 ...

  4. web3.0、比特币、区块链、元宇宙,以及那些待收割的韭菜们!

    前几天看到周星驰在社交账号上招聘web3.0的人才,感觉有必要说说web3.0,当然不是基于技术层面,而是从另一个维度说说web3.0以及其它相关的概念,从而做到如何反欺诈,如何避免被资本割韭菜.想到 ...

  5. 使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.

    前情概要 随着容器和云技术的发展, 大量的应用运行在云上的容器中, 它们的好处是毋庸置疑的, 例如极大的提高了我们的研发部署速度, 快速的扩缩容等等, 但是也存在一些小小的问题, 例如难以调试. 基于 ...

  6. Vue 实现小小记事本

    1.实现效果 用户输入后按回车,输入的内容自动保存,下方会显示记录的条数,鼠标移动到文字所在div上,会显示删除按钮,点击按钮,相应记录会被删除,下方的记录条数会相应变化,点击clear,所有记录会被 ...

  7. Codeforces Round #812 (Div. 2) D. Tournament Countdown(交互题)

    记录一下第一次写交互题 题目大意:一共有1<<n个人参加一场竞标赛,需要你通过比较两人的胜场来判断谁晋级,最终获得第一名 最多1/3*2^(n+1)次询问,每次询问query(a,b),如 ...

  8. JavaScript之数组高阶API—reduce()

    一文搞懂JavaScript数组中最难的数组API--reduce() 前面我们讲了数组的一些基本方法,今天给大家讲一下数组的reduce(),它是数组里面非常重要也是比较难的函数,那么这篇文章就好好 ...

  9. Mp3文件标签信息读取和写入(Kotlin)

    原文:Mp3文件标签信息读取和写入(Kotlin) - Stars-One的杂货小窝 最近准备抽空完善了自己的星之小说下载器(JavaFx应用 ),发现下载下来的mp3文件没有对应的标签 也是了解可以 ...

  10. Go语言核心36讲23

    我在上两篇文章中,详细地讲述了Go语言中的错误处理,并从两个视角为你总结了错误类型.错误值的处理技巧和设计方式. 在本篇,我要给你展示Go语言的另外一种错误处理方式.不过,严格来说,它处理的不是错误, ...