在Matplotlib中使用scatter()添加图例到3D散点图

在Matplotlib中使用scatter()添加图例到3D散点图

参考:Add a legend in a 3D scatterplot with scatter() in Matplotlib

在数据可视化的过程中,3D散点图是一种非常有用的工具,它可以帮助我们从三个维度分析数据的分布和关系。Matplotlib库提供了强大的绘图工具,其中scatter()函数可以用来创建3D散点图。在本文中,我们将详细介绍如何在Matplotlib中使用scatter()函数创建3D散点图,并添加图例来增强图表的信息表达能力。

1. 基础3D散点图

首先,我们需要了解如何创建一个基本的3D散点图。以下是一个简单的示例:

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

# 创建数据
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard_normal(100)

# 创建图形和轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制散点图
scatter = ax.scatter(x, y, z, c='r', label='how2matplotlib.com Red Points')

# 显示图例
ax.legend()

# 显示图形
plt.show()

Output:

在Matplotlib中使用scatter()添加图例到3D散点图

2. 添加图例

在3D散点图中添加图例是一个重要的步骤,因为它可以帮助观众理解图中的不同数据点代表的含义。下面是如何添加图例的示例:

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

# 创建数据
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard_normal(100)

# 创建图形和轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制散点图
scatter = ax.scatter(x, y, z, c='b', label='how2matplotlib.com Blue Points')

# 显示图例
ax.legend()

# 显示图形
plt.show()

Output:

在Matplotlib中使用scatter()添加图例到3D散点图

3. 自定义图例

我们可以通过修改legend()函数的参数来自定义图例的样式和位置。以下是一些自定义图例的示例:

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

# 创建数据
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard_normal(100)

# 创建图形和轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制散点图
scatter = ax.scatter(x, y, z, c='g', label='how2matplotlib.com Green Points')

# 自定义图例
ax.legend(loc='upper left', shadow=True, fontsize='large')

# 显示图形
plt.show()

Output:

在Matplotlib中使用scatter()添加图例到3D散点图

4. 多组数据的图例

当3D散点图中包含多组数据时,为每组数据添加图例是非常有用的。以下是一个包含多组数据的图例示例:

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

# 创建数据
x1 = np.random.standard_normal(100)
y1 = np.random.standard_normal(100)
z1 = np.random.standard_normal(100)
x2 = np.random.standard_normal(100)
y2 = np.random.standard_normal(100)
z2 = np.random.standard_normal(100)

# 创建图形和轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制第一组散点图
scatter1 = ax.scatter(x1, y1, z1, c='m', label='how2matplotlib.com Magenta Points')
# 绘制第二组散点图
scatter2 = ax.scatter(x2, y2, z2, c='y', label='how2matplotlib.com Yellow Points')

# 显示图例
ax.legend()

# 显示图形
plt.show()

Output:

在Matplotlib中使用scatter()添加图例到3D散点图

5. 图例的交互性

在某些情况下,我们可能希望图例具有交互性,比如点击图例中的标签来显示或隐藏对应的数据点。以下是如何实现这一功能的示例:

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

# 创建数据
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard_normal(100)

# 创建图形和轴
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 绘制散点图
scatter = ax.scatter(x, y, z, c='c', label='how2matplotlib.com Cyan Points')

# 使图例具有交互性
legend = ax.legend()
legend.set_picker(True)

def on_pick(event):
    legline = event.artist
    origline = scatter
    vis = not origline.get_visible()
    origline.set_visible(vis)
    if vis:
        legline.set_alpha(1.0)
    else:
        legline.set_alpha(0.2)
    fig.canvas.draw()

fig.canvas.mpl_connect('pick_event', on_pick)

# 显示图形
plt.show()

Output:

在Matplotlib中使用scatter()添加图例到3D散点图

以上示例展示了如何在Matplotlib中使用scatter()函数创建3D散点图,并通过添加图例来增强图表的表达力。通过这些示例,你可以学会如何为你的3D散点图添加、自定义以及交互图例,从而使你的数据可视化更加有效和吸引人。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程