系列文章目录

第一章 使用 matplotlib 绘制折线图
第二章 使用 matplotlib 绘制条形图
第三章 使用 matplotlib 绘制直方图
第四章 使用 matplotlib 绘制散点图
第五章 使用 matplotlib 绘制饼图
第六章 使用 matplotlib 绘制热力图
第七章 使用 matplotlib 绘制堆叠条形图
第八章 使用 matplotlib 在一个画布内绘制多个图


文章目录

  • 系列文章目录
  • 前言
  • 一、什么是散点图?
  • 二、散点图的绘制
  • 三、应用场景
    • 1.适用场景
    • 2.不适用场景
  • 总结

前言

上一章我们讲述了直方图的绘制,本章我们来讲述散点图的绘制。


一、什么是散点图?

散点图,又名点图、散布图、X-Y图,英文 Scatter plot 或 Scatter gram。散点图将所有的数据以点的形式展现在平面直角坐标系上。它至少需要两个不同变量,一个沿 x 轴绘制,另一个沿 y 轴绘制。每个点在 x、y 轴上都有一个确定的位置。众多的散点叠加后,有助于展示数据集的“整体景观”,从而帮助我们分析两个变量之间的相关性,或找出趋势和规律。

散点图常被用于分析变量之间的相关性。如果两个变量的散点看上去都在一条直线附近波动,则称变量之间是线性相关的;如果所有点看上去都在某条曲线(非直线)附近波动,则称此相关为非线性相关的;如果所有点在图中没有显示任何关系,则称变量间是不相关的。

二、散点图的绘制

下面我们通过例子来讲述散点图的绘制,散点图的绘制使用 scatter() 函数。例如:

import matplotlib.pyplot as pltplt.style.use('fivethirtyeight')price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]plt.scatter(price, sales_per_day)plt.title('价格和销量的关系')
plt.xlabel('价格')
plt.ylabel('销量')plt.tight_layout()
plt.show()

代码执行后得到的图形如下图所示:

x 轴表示商品的价格,y 轴表示商品的销量,每个点表示一组数据。上面点的样式是默认的,我们可以通过设置参数的方式来改变点的样式,例如大小、颜色、形状等。

import matplotlib.pyplot as pltplt.style.use('fivethirtyeight')price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]plt.scatter(price, sales_per_day, s=100, c='green', marker='*')plt.title('价格和销量的关系')
plt.xlabel('价格')
plt.ylabel('销量')plt.tight_layout()
plt.show()

上面的代码中,我们通过参数 s 设置了点的大小,c 设置了点的颜色,marker 设置了点的形状。执行完代码生成的图形如下图所示:

同样地,我们还可以参数设置点的边缘颜色,点的透明度,例如:

import matplotlib.pyplot as pltplt.style.use('fivethirtyeight')price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]plt.scatter(price, sales_per_day, s=100, c='green', edgecolors='black', linewidth=1, alpha=0.7)plt.title('价格和销量的关系')
plt.xlabel('价格')
plt.ylabel('销量')plt.tight_layout()
plt.show()

在上面的代码中,设置点的边缘的颜色为黑色,边缘线的粗细为 1,透明度设置成 0.7。执行完代码生成的图形如下图所示:

上面的例子中,点的颜色是相同的,有时候我们需要根据另外一组数据来为点设置成不同的颜色,这样通过点的颜色便可以知道数据的大小。例如:

import matplotlib.pyplot as pltplt.style.use('fivethirtyeight')price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]profit_margin = [20, 35, 40, 20, 27.5, 15]plt.scatter(price, sales_per_day, s=100, c=profit_margin, cmap='Greens', edgecolors='black', linewidth=1, alpha=0.7)plt.title('价格和销量的关系')
plt.xlabel('价格')
plt.ylabel('销量')plt.tight_layout()
plt.show()

在上面的代码中,我们添加了一组代表利润率的数据 profit_margin,在绘制图形时,将参数 c 设置成 profit_margin,这样每个点都有一个自己的颜色值。代码执行后得到的图形如下图所示:

上图中,颜色越深代表值越大,虽然从数据我们可以知道颜色越深代表值越大,但是为了让图形传达的信息更加精确,需要明确标识颜色和值的对应关系。例如:

import matplotlib.pyplot as pltplt.style.use('fivethirtyeight')price = [2.50, 1.23, 4.02, 3.25, 5.00, 4.40]
sales_per_day = [34, 62, 49, 22, 13, 19]profit_margin = [20, 35, 40, 20, 27.5, 15]plt.scatter(price, sales_per_day, s=100, c=profit_margin, cmap='Greens', edgecolors='black', linewidth=1, alpha=0.7)cbar = plt.colorbar()
cbar.set_label('利润率')plt.title('价格和销量的关系')
plt.xlabel('价格')
plt.ylabel('销量')plt.tight_layout()
plt.show()

上面的代码中,通过 colorbar() 函数设置了色卡。代码执行后得到的图形如下图所示:

上面是通过颜色的深浅来代表值的大小,在用颜色的深浅来代表值的大小的同时,我们还可以根据数据来设置点的大小。例如:

import matplotlib.pyplot as plt
import numpy as npplt.style.use('fivethirtyeight')price = np.array([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day = np.array([34, 62, 49, 22, 13, 19])profit_margin = np.array([20, 35, 40, 20, 27.5, 15])plt.scatter(price, sales_per_day, s=profit_margin*10, c=profit_margin, cmap='Greens', edgecolors='black', linewidth=1, alpha=0.7)cbar = plt.colorbar()
cbar.set_label('利润率')plt.title('价格和销量的关系')
plt.xlabel('价格')
plt.ylabel('销量')plt.tight_layout()
plt.show()

上面的代码中,将点的大小设置成 profit_margin * 10,这样点的大小便和利润率成正比。代码执行后得到的图形如下图所示:

上面的例子中只包含一组数据,在同一个图形中可以包含多组数据的散点图,例如:

import matplotlib.pyplot as plt
import numpy as npplt.style.use('fivethirtyeight')price_orange = np.array([2.50, 1.23, 4.02, 3.25, 5.00, 4.40])
sales_per_day_orange = np.array([34, 62, 49, 22, 13, 19])
profit_margin_orange = np.array([20, 35, 40, 20, 27.5, 15])price_cereal = np.array([1.50, 2.50, 1.15, 1.95])
sales_per_day_cereal = np.array([67, 34, 36, 12])
profit_margin_cereal = np.array([20, 42.5, 33.3, 18])plt.scatter(price_orange, sales_per_day_orange, s=profit_margin_orange*10, c=profit_margin_orange, cmap='jet', edgecolors='black', linewidth=1, alpha=0.7, label='orange')plt.scatter(price_cereal, sales_per_day_cereal, s=profit_margin_cereal*10, c=profit_margin_cereal, cmap='jet', edgecolors='black', linewidth=1, alpha=0.7, marker='d', label='cereal')cbar = plt.colorbar()
cbar.set_label('利润率')plt.title('价格和销量的关系')
plt.xlabel('价格')
plt.ylabel('销量')plt.legend()
plt.tight_layout()
plt.show()

在上面的代码中,我们又添加了一组数据的点图,代码执行后得到的图形如下图所示:

三、应用场景

1.适用场景

  • 适用于分析变量之间是否存在某种关系或相关性。
  • 适用于分析变量之间相关性的强弱,我们可以通过查看图上数据点的密度来确定相关性的强弱。
  • 适用于在不考虑时间的情况下比较大量的数据点,数据点越多,比较的效果就越明显。

2.不适用场景

  • 对于数据量较少的数据集不建议使用,分析结果会存在较大的偶然性。
  • 不适用于数据点过大、过多的情况,会影响图表的可读性,导致无法进行分析。可以通过减小点的大小、调整透明度、减少数据量、数据分组、建立3D模型等等的方法进行优化。
  • 数据分类过多,无法快速识别,失去可视化的意义和价值。
  • 通过观察散点图得出的变量之间的相关性并不等同于确定的因果关系。

总结

本章我们讲述了散点图的绘制以及散点图的适用场景和不适用场景。

上一章 使用 matplotlib 绘制直方图

第四章 使用 matplotlib 绘制散点图相关推荐

  1. 第一章 使用 matplotlib 绘制折线图

    系列文章目录 第一章 使用 matplotlib 绘制折线图 第二章 使用 matplotlib 绘制条形图 第三章 使用 matplotlib 绘制直方图 第四章 使用 matplotlib 绘制散 ...

  2. 第三章 使用 matplotlib 绘制直方图

    系列文章目录 第一章 使用 matplotlib 绘制折线图 第二章 使用 matplotlib 绘制条形图 第三章 使用 matplotlib 绘制直方图 第四章 使用 matplotlib 绘制散 ...

  3. 7月16日数据科学库学习笔记——matplotlib 绘制散点图、条形图、直方图

    文章目录 前言 一.绘制散点图 二.绘制条形图 1.纵向条形图 2.横向条形图 三.绘制分组条形图 四.绘制直方图 1.plt.hist 方法 2.plt.bar 方法绘制直方图 前言 本文为7月16 ...

  4. Python matplotlib 绘制散点图 还不收藏起来

    复习回顾 我们在往前几期中对matplotlib模块学习,对常用的反映数据变化的折线图,对比数据类型差异的柱状图和反应数据频率分布情况的直方图. 往前内容快速查看 超详细的Python matplot ...

  5. python读取excel画散点图-python学习之matplotlib绘制散点图实例

    要绘制单个点,可使用函数scatter(),并向其传递一对x和y坐标,它将在指定位置绘制一个点: """使用scatter()绘制散点图""" ...

  6. python画散点图类型-python学习之matplotlib绘制散点图实例

    要绘制单个点,可使用函数scatter(),并向其传递一对x和y坐标,它将在指定位置绘制一个点: """使用scatter()绘制散点图""" ...

  7. python绘制散点图、如何选两列作为横坐标_Python利用matplotlib绘制散点图的新手教程...

    前言 上篇文章介绍了使用matplotlib绘制折线图,参考:https://www.jb51.net/article/198991.htm,本篇文章继续介绍使用matplotlib绘制散点图. 一. ...

  8. Python+matplotlib绘制散点图模拟心型图案

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年3月第6 ...

  9. python画散点图-python学习之matplotlib绘制散点图实例

    要绘制单个点,可使用函数scatter(),并向其传递一对x和y坐标,它将在指定位置绘制一个点: """使用scatter()绘制散点图""" ...

最新文章

  1. TensorFlow基础笔记(7) 图像风格化效果与性能优化进展
  2. Windows x64内核学习笔记(三)—— SMEP SMAP
  3. Go连接MySql数据库too many connections
  4. Linux下排查进程占用cpu高的问题
  5. Design Compiler指南——设计综合过程
  6. 不吃不喝,两周业余时间研究(cisco SCE CM )
  7. 前后端分离架构一直没机会实战?1周完成Vue+Core WebApi移动商城实战(含源码)!...
  8. android按钮响应事件吗,Android 按钮响应事件的几种方式
  9. constraintlayout布局新特性_进阶ConstraintLayout-2.0新特性
  10. 5G协议标准化及进展
  11. linux的消息队列的创建和实现
  12. linux lefse分析,科学网-linux本地化进行lefse分析-林国鹏的博文
  13. 怎么在计算机中添加电脑桌面,如何在电脑正在使用的主题中添加桌面背景图片...
  14. 原理 CDN加速原理
  15. HTML5游戏 看你有多“色” 开发
  16. 6.2 病毒机制与组成结构
  17. 【榜单公布】10·24征文活动结果出炉!
  18. Eclipse 2020如何创建JAVA Web项目
  19. No.1_NABCD模型分析
  20. 10分钟快速学Handlebars

热门文章

  1. JDBC - MySQL
  2. 软件体系结构KWIC索引结构
  3. c语言long long是什么意思,long是什么意思_long在线翻译_英语_读音_用法_例句_海词词典...
  4. 【译】第十篇 Integration Services:高级事件行为
  5. 数据通信网络基础,华为VRP系统(HCLA-Datacom v1.0华为认证数通笔记2)
  6. 史上第一张黑洞真身照片终于问世——原来黑洞不是黑的...
  7. linux服务器黑客攻防
  8. 内存容量大小单位转换
  9. 软件:IIS上配置CGI
  10. Linux 驱动 – Backlight 驱动