《python 数据可视化基础》第三章 散点图 scatter

news2024/12/24 2:16:40

第三章 散点图 scatter

参考自官方文档:https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.scatter.html#matplotlib.axes.Axes.scatter

matplotblib 绘制散点图常用参数:

  • x, y:一个或者多个点的位置;
  • s:标记大小(以点**2为单位)(印刷点为1/72;
  • c:标记颜色。可选值:
    • 使用cmap和范数将n个数字的标量或序列映射到颜色。
    • 行为RGB或RGBA的2D阵列。
    • 长度为n的一系列颜色。
    • 单色格式字符串。
  • marker:标记样式,默认 "o",更多标记符号参考 https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers。
  • cmap:用于将标量数据映射到颜色的Colormap实例或注册的Colormap名称。
  • norm:在使用cmap映射到颜色之前,用于将标量数据缩放到[0,1]范围的归一化方法。默认情况下,使用线性缩放,将最小值映射到0,将最大值映射到1。
  • alpha:alpha混合值,介于0(透明)和1(不透明)之间。
  • linewidths:线条粗细。
  • edgecolors:边缘颜色。可选 {'face', 'none', None}

3.1 官方例子

以下例子来自 matplotlib 官方

https://matplotlib.org/stable/gallery/lines_bars_and_markers/scatter_demo2.html#sphx-glr-gallery-lines-bars-and-markers-scatter-demo2-py

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook

# Load a numpy record array from yahoo csv data with fields date, open, high,
# low, close, volume, adj_close from the mpl-data/sample_data directory. The
# record array stores the date as an np.datetime64 with a day unit ('D') in
# the date column.
price_data = (cbook.get_sample_data('goog.npz', np_load=True)['price_data']
              .view(np.recarray))
price_data = price_data[-250:]  # get the most recent 250 trading days

delta1 = np.diff(price_data.adj_close) / price_data.adj_close[:-1]

# Marker size in units of points^2
volume = (15 * price_data.volume[:-2] / price_data.volume[0])**2
close = 0.003 * price_data.close[:-2] / 0.003 * price_data.open[:-2]

fig, ax = plt.subplots()
ax.scatter(delta1[:-1], delta1[1:], c=close, s=volume, alpha=0.5)

ax.set_xlabel(r'$\Delta_i$', fontsize=15)
ax.set_ylabel(r'$\Delta_{i+1}$', fontsize=15)
ax.set_title('Volume and percent change')

ax.grid(True)
fig.tight_layout()

plt.show()

绘制的效果如下:

3.1 官方例子散点图
这个例子需要注意以下几个方面:

  • 官方的例子基本上都不再直接使用 plt 直接进行绘制,而是在 figure() 后返回的第二个对象进行操作;
  • 并且这里提供了 latex 公式的转换功能;
  • 当遇到这方面的需求,比如绘制论文实验图片,可以考虑参考这个例子。

3.2 官方例子 2

https://matplotlib.org/stable/plot_types/basic/scatter_plot.html#sphx-glr-plot-types-basic-scatter-plot-py

这个例子更加简单,代码如下:

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('_mpl-gallery')

# make the data
np.random.seed(3)
x = 4 + np.random.normal(0, 2, 24)
y = 4 + np.random.normal(0, 2, len(x))
# size and color:
sizes = np.random.uniform(15, 80, len(x))
colors = np.random.uniform(15, 80, len(x))

# plot
fig, ax = plt.subplots()

ax.scatter(x, y, s=sizes, c=colors, vmin=0, vmax=100)

ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       ylim=(0, 8), yticks=np.arange(1, 8))

plt.show()

绘制效果如下:

在这里插入图片描述

3.3 线性回归例子

import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)


x = np.arange(0.0, 50.0, 2.0)
y = x ** 2 + np.random.rand(*x.shape) * 30.0
sizes = np.random.rand(*x.shape) * 800 + 500

fig, ax = plt.subplots()
ax.scatter(x, y, sizes, c="green", alpha=0.5, marker=r'$\clubsuit$',
           label="Luck")
ax.set_xlabel("Leprechauns")
ax.set_ylabel("Gold")
ax.legend()
plt.show()

绘制结果为:

在这里插入图片描述

3.4 多类型散点图

这里以三类散点图为例

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(19680801)


fig, ax = plt.subplots()
for color in ['tab:blue', 'tab:orange', 'tab:green']:
    n = 50
    x, y = np.random.rand(2, n)
    scale = 200.0 * np.random.rand(n)
    ax.scatter(x, y, c=color, s=scale, label=color,
               alpha=0.3, edgecolors='none')

ax.legend()
ax.grid(True)

plt.show()

绘制结果为:

在这里插入图片描述

3.5 极轴上的散点图

摘录自 https://matplotlib.org/stable/gallery/pie_and_polar_charts/polar_scatter.html#sphx-glr-gallery-pie-and-polar-charts-polar-scatter-py

import numpy as np
import matplotlib.pyplot as plt


# Fixing random state for reproducibility
np.random.seed(19680801)

# Compute areas and colors
N = 150
r = 2 * np.random.rand(N)
theta = 2 * np.pi * np.random.rand(N)
area = 200 * r**2
colors = theta

fig = plt.figure()
ax = fig.add_subplot(projection='polar')
c = ax.scatter(theta, r, c=colors, s=area, cmap='hsv', alpha=0.75)
plt.show()

绘制效果如下:

在这里插入图片描述
类似图片的绘制推荐参考官网地址:https://matplotlib.org/stable/gallery/pie_and_polar_charts/polar_scatter.html#sphx-glr-gallery-pie-and-polar-charts-polar-scatter-py

在这里插入图片描述
在这里插入图片描述

3.6 三维散点图

import matplotlib.pyplot as plt
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)


def randrange(n, vmin, vmax):
    """
    Helper function to make an array of random numbers having shape (n, )
    with each number distributed Uniform(vmin, vmax).
    """
    return (vmax - vmin)*np.random.rand(n) + vmin

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

n = 100

# For each set of style and range settings, plot n random points in the box
# defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].
for m, zlow, zhigh in [('o', -50, -25), ('^', -30, -5)]:
    xs = randrange(n, 23, 32)
    ys = randrange(n, 0, 100)
    zs = randrange(n, zlow, zhigh)
    ax.scatter(xs, ys, zs, marker=m)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()

绘制效果如下:
在这里插入图片描述

3.7 本章总结

绘制自己需要的散点图的步骤大致如下:

  1. 明确自己需要绘制的散点图类型;
  2. 确保待绘制图片的数据没有问题;
  3. 复制类似的例子源码,根据参数说明修改参数,绘制符合个性化需求的图片。

Smileyan
2022.12.6 22:00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Halcon快速入门

前言一,HALCON 概述1.1,HALCON 安装二,HALCON 架构 2.1,算子 2.1.1,参数和数据结构 2.2,拓展包2.3,接口 2.3.1,HALCON-Python 接口2.3.2,HALCON-C 接口2.3.3,…

[附源码]Python计算机毕业设计SSM家政服务预约小程序(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

开源版商城源码V2.0【小程序 + H5+ 公众号 + APP】

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 这是一款轻量级、高性能、前后端分离的电商系统,,支持微信小程序 H5 公众号 APP,前后端源码完全开源,看见及所得,完美支持二…

[附源码]Python计算机毕业设计SSM家政服务管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

vue中的h函数与JSX语法

vue不仅像react一样实现了jsx,而且还借助jsx发挥了javascript动态画的优势,了解学习jsx可以让你更灵活的开发需求。 一、 h函数 在聊vue中的JSX之前,需要简单介绍一下 h 函数,理解了 h 函数,会更好的理解JSX。 1.h函…

[附源码]计算机毕业设计基于Springboot作业管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

WebLogic JVM Core dumps文件的生成控制

一,背景 当我们运行的WebLogic JVM发生Fatal Error时,会造成JVM crash掉,进而造成进程终止。一般来说crash的时间我们是无法估计在什么时候的,它具有很大的偶然性,因此理论上有时我们希望自动产生Core dump文件来提供…

figma有哪些快速入门的好用技巧

使用Figma在创建设计系统或处理大型设计项目时,总会涉及批量修改.快速定位.自动布局问题,MarcAndrew这篇文章分享了技巧,可以大大提高设计效率,希望对大家有所帮助: 在这篇文章中,我列出了一些快速简单的方法来帮助你…

YoLo V3 SPP u模型的讲解与总结

一。mosaic图像增强 其实就是将多张图片给汇总到一起,在源码当中就是默认使用4张图片进行拼接,进行预测。 优点: 增加数据的多样性增加目标个数BN能一次性统计多张图片的参数(变相的增加了,输入一张图片其实就已经包…

Java agent 使用详解

一、前言 于一个即将上线的应用来说,系统监控是必不可少的,为什么需要监控呢?应用是跑在服务器上的,应用在运行过程中会发生各自意想不到的问题,像大家熟知的OOM,mysql故障,服务器宕机&#xff…

Mac docker-desktop 安装单机版k8s

文章目录01 引言02 下载安装docker desktop03 安装k8s04 安装k8s控制台(k8s dashboard)05 更方遍的方式安装dashboard01 引言 本文主要讲解在Mac下使用docker-desktop来安装k8s。 02 下载安装docker desktop 下载地址:https://www.docker.…

实例方法定义语法(四)

那么什么是方法呢? Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 1.方法的定义 类的方法定义类的某种行为或者功能。 方法定义的语法…

Allegro如何设置丝印位号优先显示操作指导

Allegro如何设置丝印位号优先显示操作指导 Allegro支持让丝印位号优先显示,可以让视图更加的清晰明了,按照需要的方式显示,具体操作如下 以下图为例 丝印位号被器件的外形盖住了,需要显示的效果为,优先显示丝印位号,器件外形次优先 选择display-layer Priority 出现Di…

MySQL日志系统

MySQL相关文章 慢sql搜集分析工具搭建 前言 日志系统可谓是MySQL中的重中之重,一些MySQL的特性也通过依赖于日志实现的。 本篇文章过一遍日志相关的东西,方便日后复习。 binlog 概念 二进制日志文件,记录了所有的DDL(数据库…

tensorflow.keras常用模块介绍

目录前言一、基础层1-0、Input层1-1、Dense层1-2、Activation层(激活层)、Dropout层1-3、Lambda层1-4、Flatten层二、嵌入层2-1、Embedding层三、池化层3-1、MaxPooling1D层3-2、MaxPooling2D层3-3、AveragePooling1D层3-4、AveragePooling2D层3-5、Glob…

Android 组件化架构设计从原理到实战

为什么需要组件化 小项目是不需要组件化的。当一个项目有数十个人开发,编译项目要花费10分钟,修改一个bug就可能会影响到其他业务,小小的改动就需要进行回归测试,如果是这种项目,那么我们需要进行组件化了 组件化和模…

有效的渗透测试才能确保Web应用安全

应用程序的安全性和快速交付之间存在矛盾,但由于应用程序代码缺陷和安全漏洞,我们正在目睹或经历越来越多的攻击。据调查,软件安全漏洞占了大约47%的安全事故。 与任何软件一样,Web应用程序也包含缺陷和错误。这种安全风险的一个…

[附源码]Python计算机毕业设计Django物品捎带系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

SAP PS 第9节 合并采购申请、组合WBS之详解

SAP PS 第9节 合并采购申请、组合WBS之影响1 合并采购申请1.1 合并采购申请后台配置1.2 合并采购申请效果如下2 组合WBS2.1 后台配置2.1.1 激活需要分组的MRP组2.1.2 项目必须为有库存模式,无论估价或者未估价都可以2.1.3 物料必须允许项目库存(允许独立…

Azkaban登录分析

分析意义:目前azkaban采用的是azkaban-users.xml配置文件的方式,配置登录用户。如果公司需要二次开发,增加安全性和便捷性,想从数据库取值呢,该如何着手开发呢?本文分析登录过程,便于进行azkaban的二次登录开发。 1、登录请求地址,请求方式和参数 请求地址:http://x…