You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pyplot mplot3d读取CSV文件并绘制3D散点图?

用Matplotlib的mplot3d绘制3D散点图的完整方案

嘿,刚好我之前处理过类似的网格数据绘图需求,给你详细讲一下步骤,附带可直接运行的代码:

1. 先理清楚数据结构

你的CSV数据是4行3列的网格:

  • 每行对应一个x值(x=1,2,3,4)
  • 每列对应一个y值(y=1,2,3)
  • 每个单元格的数值就是对应(x,y)点的z值

2. 读取CSV数据

推荐用numpy来读取,比原生csv模块更高效,尤其适合网格数据:

import numpy as np

# 读取CSV,注意你的数据是分号分隔,所以指定delimiter=';'
z_data = np.genfromtxt('your_file.csv', delimiter=';')
# 此时z_data是一个4x3的numpy数组,完美对应x=1-4、y=1-3的z值

如果你的CSV文件带表头,可以加skip_header=1参数跳过第一行。

3. 生成对应的x、y坐标数组

散点图要求x、y、z都是一维数组,我们需要把网格坐标展开:

# 定义x和y的原始取值
x_coords = np.array([1, 2, 3, 4])
y_coords = np.array([1, 2, 3])

# 生成网格坐标,indexing='ij'确保x对应行、y对应列(和你的数据结构完全匹配)
x, y = np.meshgrid(x_coords, y_coords, indexing='ij')

# 把二维网格展平成一维数组
x_flat = x.flatten()
y_flat = y.flatten()
z_flat = z_data.flatten()

用meshgrid的好处是,之后哪怕x、y的取值范围变了,你只需要修改x_coords和y_coords就行,不用手动重复数值。

4. 绘制3D散点图

接下来用mplot3d创建可视化:

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

# 创建画布和3D坐标轴
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')

# 绘制散点图,可自定义颜色、大小等参数
scatter = ax.scatter(x_flat, y_flat, z_flat, c=z_flat, cmap='viridis', s=100)

# 设置坐标轴标签和标题
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Scatter Plot of Grid Data')

# 添加颜色条,对应z值的颜色映射
fig.colorbar(scatter, ax=ax, label='Z Value')

# 显示图形
plt.show()

额外小提示

  • 如果你的CSV数据是逗号分隔(不是分号),把delimiter=';'改成delimiter=','就行
  • 可以调整scatter函数的c(颜色)、s(点大小)、cmap(颜色映射)参数来美化图形
  • 如果需要保存高清图片,在plt.show()之前加plt.savefig('3d_scatter.png', dpi=300)就行

内容的提问来源于stack exchange,提问作者Stepan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 20:22:42