ZetCode

Matplotlib 散点图

最后修改于 2025 年 2 月 25 日

Matplotlib 是一个强大的 Python 库,用于创建静态、动态和交互式可视化效果。 散点图用于可视化两个变量之间的关系。 本教程介绍如何使用 Matplotlib 创建各种类型的散点图。

散点图非常适合识别数据中的趋势、相关性和异常值。 Matplotlib 提供了一个灵活且易于使用的界面,用于创建具有自定义功能的散点图。

基本散点图

此示例演示如何创建基本散点图。

basic_scatter_chart.py
import matplotlib.pyplot as plt

# Data
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# Create a scatter chart
plt.scatter(x, y)

# Add labels and title
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Basic Scatter Chart")

# Display the chart
plt.show()

plt.scatter() 函数用于创建散点图。 plt.show() 函数显示图表。

自定义散点图

此示例演示如何使用颜色、大小和标记自定义散点图。

custom_scatter_chart.py
import matplotlib.pyplot as plt

# Data
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
sizes = [100, 200, 300, 400, 500]  # Marker sizes
colors = ['red', 'green', 'blue', 'purple', 'orange']  # Marker colors

# Create a scatter chart with custom styles
plt.scatter(x, y, s=sizes, c=colors, alpha=0.6, edgecolors="black")

# Add labels and title
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Custom Scatter Chart")

# Display the chart
plt.show()

scalphaedgecolors 参数用于自定义标记的外观。

带有颜色映射的散点图

此示例演示如何使用颜色映射来表示第三个变量。

color_mapping_scatter.py
import matplotlib.pyplot as plt
import numpy as np

# Data
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)  # Third variable for color mapping
sizes = 1000 * np.random.rand(50)  # Third variable for size mapping

# Create a scatter chart with color mapping
plt.scatter(x, y, c=colors, s=sizes, alpha=0.6, cmap="viridis")

# Add a colorbar
plt.colorbar()

# Add labels and title
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Scatter Chart with Color Mapping")

# Display the chart
plt.show()

cmap 参数用于将颜色映射应用于标记。 plt.colorbar() 函数向图表添加颜色条。

带有回归线的散点图

此示例演示如何向散点图添加回归线。

scatter_with_regression.py
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import linregress

# Data
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# Create a scatter chart
plt.scatter(x, y)

# Add a regression line
slope, intercept, r_value, p_value, std_err = linregress(x, y)
plt.plot(x, slope * np.array(x) + intercept, color="red", label="Regression Line")

# Add labels, title, and legend
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Scatter Chart with Regression Line")
plt.legend()

# Display the chart
plt.show()

scipy.stats 中的 linregress() 函数用于计算回归线。 plt.plot() 函数将回归线添加到图表中。

3D 散点图

此示例演示如何创建 3D 散点图。

3d_scatter_chart.py
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# Data
x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)

# Create a 3D scatter chart
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
ax.scatter(x, y, z)

# Add labels and title
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")
ax.set_zlabel("Z-axis")
ax.set_title("3D Scatter Chart")

# Display the chart
plt.show()

mpl_toolkits.mplot3d 模块用于创建 3D 散点图。 projection="3d" 参数启用 3D 绘图。

散点图的最佳实践

来源

Matplotlib 散点图文档

在本文中,我们探讨了使用 Matplotlib 的各种类型的散点图,包括基本散点图、自定义散点图、颜色映射散点图、回归散点图和 3D 散点图。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 Python 教程