matplotlib绘制三维散点图

1.只有一种点的散点图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 空间三维画图


# 数据
data = np.arange(24).reshape((8, 3))
# data的值如下:
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]
#  [12 13 14]
#  [15 16 17]
#  [18 19 20]
#  [21 22 23]]
x = data[:, 0]  # [ 0  3  6  9 12 15 18 21]
y = data[:, 1]  # [ 1  4  7 10 13 16 19 22]
z = data[:, 2]  # [ 2  5  8 11 14 17 20 23]


# 绘制散点图
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x, y, z)


# 添加坐标轴(顺序是Z, Y, X)
ax.set_zlabel('Z', fontdict={'size': 15, 'color': 'red'})
ax.set_ylabel('Y', fontdict={'size': 15, 'color': 'red'})
ax.set_xlabel('X', fontdict={'size': 15, 'color': 'red'})
plt.show()

 

 

三维图散点图如下:

2.有多种点及图例的散点图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 空间三维画图


# 数据

# 数据1
data1 = np.arange(24).reshape((8, 3))
# data的值如下:
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]
#  [12 13 14]
#  [15 16 17]
#  [18 19 20]
#  [21 22 23]]
x1 = data1[:, 0]  # [ 0  3  6  9 12 15 18 21]
y1 = data1[:, 1]  # [ 1  4  7 10 13 16 19 22]
z1 = data1[:, 2]  # [ 2  5  8 11 14 17 20 23]

# 数据2
data2 = np.random.randint(0, 23, (6, 3))
x2 = data2[:, 0]
y2 = data2[:, 1]
z2 = data2[:, 2]


# 绘制散点图
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x1, y1, z1, c='r', label='顺序点')
ax.scatter(x2, y2, z2, c='g', label='随机点')


# 绘制图例
ax.legend(loc='best')


# 添加坐标轴(顺序是Z, Y, X)
ax.set_zlabel('Z', fontdict={'size': 15, 'color': 'red'})
ax.set_ylabel('Y', fontdict={'size': 15, 'color': 'red'})
ax.set_xlabel('X', fontdict={'size': 15, 'color': 'red'})


# 展示
plt.show()

图:

<think>好的,我现在需要帮助用户解决如何使用Matplotlib绘制3D散点图的问题。首先,我要回忆一下自己之前学过的Matplotlib相关知识,特别是关于3D绘的模块。记得Matplotlib的mpl_toolkits.mplot3d模块是用来处理3D形的,可能需要导入这个模块才能创建3D表。 用户提到了引用中的内容,比如引用[1]和引用[2],都提到了使用scatter函数和mplot3d模块。我需要确保这些信息准确。首先,绘制3D通常需要导入pyplot和mplot3d中的Axes3D,虽然现在新版本的Matplotlib可能不需要显式导入Axes3D,但为了兼容性可能还是需要加上。 接下来,用户需要示例代码。我应该分步骤来写:创建画布,获取3D坐标系,生成数据,绘制散点图,设置标签和标题,最后显示表。数据部分可能需要生成一些随机数据或者有规律的数据,比如使用numpy的随机函数生成三维。 然后,还要注意设置坐标轴的标签和的标题,这样像才会更清晰。可能还需要调整的颜色、大小等参数,让表更美观。但用户主要问的是示例代码,所以基础的部分应该足够。 另外,用户的问题中引用了三个来源,其中引用[1]和[2]直接相关,引用[3]是关于折线的,可能不需要用到,但要注意是否正确关联。在回答中应该正确引用这些来源,比如在提到使用scatter函数时引用[1],在说明导入模块时引用[2]。 可能还需要考虑是否需要添加额外的调整步骤,比如视角调整或者添加颜色条,但用户可能只需要基础示例。不过,给出一些常见参数调整的建议会更好,比如颜色、大小、透明度等,这样用户可以根据需要修改。 最后,生成的相关问题需要与3D绘相关,比如如何添加标签、调整视角或者绘制曲面等,这样用户如果有进一步的问题可以自行参考。</think>以下是使用Matplotlib绘制3D散点图的详细步骤和示例代码: ### 步骤说明 1. **导入模块**:使用`matplotlib.pyplot`创建画布,通过`mpl_toolkits.mplot3d`添加3D坐标轴[^2] 2. **生成数据**:用`numpy`生成三维坐标数据 3. **创建3D坐标系**:通过`projection='3d'`参数将二维画布转换为三维坐标系[^2] 4. **绘制散点图**:调用`scatter`函数设置的坐标、大小和颜色[^1] 5. **添加标签**:使用`set_xlabel`等方法标注坐标轴 6. **显示结果**:通过`plt.show()`渲染像 ```python import matplotlib.pyplot as plt import numpy as np # 生成三维随机数据 np.random.seed(42) n = 100 x = np.random.rand(n) y = np.random.rand(n) z = np.random.rand(n) colors = np.random.rand(n) sizes = 100 * np.random.rand(n) # 创建画布和3D坐标系 fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(111, projection='3d') # 添加3D坐标轴[^2] # 绘制散点图 scatter = ax.scatter( x, y, z, c=colors, # 颜色序列 s=sizes, # 的大小 alpha=0.6, # 透明度 cmap='viridis', # 颜色映射 marker='o' # 形状 ) # 添加颜色条 fig.colorbar(scatter, ax=ax, shrink=0.5) # 设置坐标轴标签 ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_zlabel('Z轴') ax.set_title('3D散点图示例') plt.show() ``` ### 关键参数说明 - `c`:支持RGB数组或标量值序列 - `s`:控制大小的标量或数组 - `depthshade`:默认为True,启用深度阴影效果 - `cmap`:颜色映射方案,如'hot','cool','plasma' [^1]: 在matplotlib的mpl_toolkits.mplot3d模块中,你可以使用`scatter`函数绘制多种类型的3D散点图。 : Matplotlib 也可以绘制 3D 像,与二维像不同的是,绘制三维像主要通过 mplot3d 模块实现。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值