手册目录

Python 教程

浏览2974
更新时间2025-08-06

创建散点图

使用 Pyplot,您可以使用 scatter() 函数来绘制散点图。

scatter() 函数为每个观测值绘制一个点。它需要两个长度相同的数组,一个用于 x 轴的值,另一个用于 y 轴的值:

实例

一个简单的散点图:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])

plt.scatter(x, y)
plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

上例中的观测值是 13 辆汽车经过的结果。

X 轴显示了汽车的车龄。

Y 轴显示了汽车经过时的速度。

这些观测值之间是否存在关系?

看起来车越新,开得越快,但这可能只是巧合,毕竟我们只记录了 13 辆汽车。

比较图表

在上面的例子中,速度和年龄之间似乎存在某种关系,但如果我们再将另一天的观测值也绘制出来会如何呢?散点图会告诉我们其他信息吗?

实例

在同一张图上绘制两个图表:

import matplotlib.pyplot as plt
import numpy as np

# 第一天,13 辆汽车的车龄和速度:
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)

# 第二天,15 辆汽车的车龄和速度:
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y)

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

注意:两个图表使用两种不同的颜色绘制,默认是蓝色和橙色,稍后在本章中您将学习如何更改颜色。

通过比较这两个图表,我认为可以安全地说它们都给出了相同的结论:汽车越新,开得越快。

颜色

您可以使用 colorc 参数为每个散点图设置自己的颜色:

实例

设置标记点的颜色:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

为每个点着色

您甚至可以使用颜色数组作为 c 参数的值来为每个点设置特定颜色:

注意:您不能为此使用 color 参数,只能使用 c 参数。

实例

设置标记点的颜色:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])

plt.scatter(x, y, c=colors)

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

彩色映射

Matplotlib 模块提供了许多可用的彩色映射。

彩色映射就像颜色列表,其中每种颜色都有一个从 0 到 100 的值。

以下是一个彩色映射的例子:

ColorMap

这个彩色映射称为 'viridis',如您所见,它从 0(紫色)开始,一直到 100(黄色)。

如何使用彩色映射

您可以使用关键字参数 cmap 和彩色映射的值来指定彩色映射,在这种情况下,'viridis' 是 Matplotlib 中可用的内置彩色映射之一。

此外,您必须创建一个数组,其中包含值(从 0 到 100),每个散点图中的点一个值:

实例

创建颜色数组,并在散点图中指定彩色映射:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

您可以通过包含 plt.colorbar() 语句来在绘图中包含彩色映射:

实例

包含实际的彩色映射:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.colorbar()

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

可用的彩色映射

您可以选择任意内置彩色映射:

名称 试一试 反转 试一试
Accent 试一试 Accent_r 试一试
Blues 试一试 Blues_r 试一试
BrBG 试一试 BrBG_r 试一试
BuGn 试一试 BuGn_r 试一试
BuPu 试一试 BuPu_r 试一试
CMRmap 试一试 CMRmap_r 试一试
Dark2 试一试 Dark2_r 试一试
GnBu 试一试 GnBu_r 试一试
Greens 试一试 Greens_r 试一试
Greys 试一试 Greys_r 试一试
OrRd 试一试 OrRd_r 试一试
Oranges 试一试 Oranges_r 试一试
PRGn 试一试 PRGn_r 试一试
Paired 试一试 Paired_r 试一试
Pastel1 试一试 Pastel1_r 试一试
Pastel2 试一试 Pastel2_r 试一试
PiYG 试一试 PiYG_r 试一试
PuBu 试一试 PuBu_r 试一试
PuBuGn 试一试 PuBuGn_r 试一试
PuOr 试一试 PuOr_r 试一试
PuRd 试一试 PuRd_r 试一试
Purples 试一试 Purples_r 试一试
RdBu 试一试 RdBu_r 试一试
RdGy 试一试 RdGy_r 试一试
RdPu 试一试 RdPu_r 试一试
RdYlBu 试一试 RdYlBu_r 试一试
RdYlGn 试一试 RdYlGn_r 试一试
Reds 试一试 Reds_r 试一试
Set1 试一试 Set1_r 试一试
Set2 试一试 Set2_r 试一试
Set3 试一试 Set3_r 试一试
Spectral 试一试 Spectral_r 试一试
Wistia 试一试 Wistia_r 试一试
YlGn 试一试 YlGn_r 试一试
YlGnBu 试一试 YlGnBu_r 试一试
YlOrBr 试一试 YlOrBr_r 试一试
YlOrRd 试一试 YlOrRd_r 试一试
afmhot 试一试 afmhot_r 试一试
autumn 试一试 autumn_r 试一试
binary 试一试 binary_r 试一试
bone 试一试 bone_r 试一试
brg 试一试 brg_r 试一试
bwr 试一试 bwr_r 试一试
cividis 试一试 cividis_r 试一试
cool 试一试 cool_r 试一试
coolwarm 试一试 coolwarm_r 试一试
copper 试一试 copper_r 试一试
cubehelix 试一试 cubehelix_r 试一试
flag 试一试 flag_r 试一试
gist_earth 试一试 gist_earth_r 试一试
gist_gray 试一试 gist_gray_r 试一试
gist_heat 试一试 gist_heat_r 试一试
gist_ncar 试一试 gist_ncar_r 试一试
gist_rainbow 试一试 gist_rainbow_r 试一试
gist_stern 试一试 gist_stern_r 试一试
gist_yarg 试一试 gist_yarg_r 试一试
gnuplot 试一试 gnuplot_r 试一试
gnuplot2 试一试 gnuplot2_r 试一试
gray 试一试 gray_r 试一试
hot 试一试 hot_r 试一试
hsv 试一试 hsv_r 试一试
inferno 试一试 inferno_r 试一试
jet 试一试 jet_r 试一试
magma 试一试 magma_r 试一试
nipy_spectral 试一试 nipy_spectral_r 试一试
ocean 试一试 ocean_r 试一试
pink 试一试 pink_r 试一试
plasma 试一试 plasma_r 试一试
prism 试一试 prism_r 试一试
rainbow 试一试 rainbow_r 试一试
seismic 试一试 seismic_r 试一试
spring 试一试 spring_r 试一试
summer 试一试 summer_r 试一试
tab10 试一试 tab10_r 试一试
tab20 试一试 tab20_r 试一试
tab20b 试一试 tab20b_r 试一试
tab20c 试一试 tab20c_r 试一试
terrain 试一试 terrain_r 试一试
twilight 试一试 twilight_r 试一试
twilight_shifted 试一试 twilight_shifted_r 试一试
viridis 试一试 viridis_r 试一试
winter 试一试 winter_r 试一试

大小

您可以使用 s 参数来改变点的大小。

就像颜色一样,请确保 sizes 数组的长度与 x 轴和 y 轴的数组长度相同:

实例

为标记设置您自己的大小:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])

plt.scatter(x, y, s=sizes)

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

透明度

您可以使用 alpha 参数来调整点的透明度。

就像颜色一样,请确保 sizes 数组的长度与 x 轴和 y 轴的数组长度相同:

实例

为标记设置您自己的大小:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])

plt.scatter(x, y, s=sizes, alpha=0.5)

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

结合颜色、大小和透明度

您可以将色彩映射与不同大小的点结合起来。如果点是透明的,这将得到最好的可视化效果:

实例

为 x 点、y 点、颜色和大小创建包含 100 个值的随机数组:

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100, size=(100))

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')

plt.colorbar()

plt.show()
运行实例 »

点击 "运行实例" 按钮查看在线实例

结果:

Matplotlib 散点图

相关视频

更多

免费

php8,我来也
初级php8,我来也

321791次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382433次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282799次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13415次学习

收藏
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号