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

如何用Python绘制可自定义颜色与大小的3D球体散点图?

实现3D球体散点图(带颜色与大小控制)

Matplotlib 模拟3D球体效果

Matplotlib默认的scatter3D标记是平面圆形,但可以通过参数优化让它呈现近似3D球体的视觉效果,同时支持颜色和大小控制:

import matplotlib.pyplot as plt
import numpy as np

# 替换为你的真实数据
np.random.seed(42)
x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
point_sizes = np.random.randint(50, 500, 100)  # 控制每个点的大小
point_colors = z  # 基于z值设置颜色,可替换为其他数据维度

fig = plt.figure(figsize=(10,7))
ax = fig.add_subplot(projection='3d')

# 核心参数:depthshade=True开启深度阴影增强立体感;alpha调整透明度避免遮挡
scatter = ax.scatter3D(x, y, z, 
                       s=point_sizes, 
                       c=point_colors, 
                       marker='o', 
                       depthshade=True, 
                       alpha=0.7, 
                       cmap='viridis')

# 添加颜色条对应颜色含义
fig.colorbar(scatter, ax=ax, pad=0.1)

ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')
plt.show()

真正的3D球体渲染(Mayavi)

如果需要完全真实的3D球体(旋转时能看到球面弧度),Mayavi是更合适的工具,它基于VTK渲染,适合大规模数据的3D可视化:

from mayavi import mlab
import numpy as np

# 替换为你的真实数据
np.random.seed(42)
x = np.random.randn(500)
y = np.random.randn(500)
z = np.random.randn(500)
sphere_radii = np.random.rand(500) * 0.2  # 球体半径,控制大小
sphere_colors = z  # 绑定颜色到数据

mlab.figure(size=(800, 600))
# points3d默认绘制球体,scale_factor控制单个球体大小,colormap指定配色
mlab.points3d(x, y, z, sphere_colors, 
              scale_factor=sphere_radii, 
              scale_mode='scalar', 
              colormap='viridis')

mlab.xlabel('X轴')
mlab.ylabel('Y轴')
mlab.zlabel('Z轴')
mlab.colorbar(title='Z值')
mlab.show()

交互式3D球体散点图(Plotly)

如果需要可交互的网页端可视化,Plotly能生成支持旋转、缩放的3D球体散点图,操作更友好:

import plotly.graph_objects as go
import numpy as np

# 替换为你的真实数据
np.random.seed(42)
x = np.random.randn(200)
y = np.random.randn(200)
z = np.random.randn(200)
point_sizes = np.random.randint(10, 50, 200)
point_colors = z

fig = go.Figure(data=[go.Scatter3d(
    x=x, y=y, z=z,
    mode='markers',
    marker=dict(
        size=point_sizes,
        color=point_colors,
        colorscale='Viridis',
        opacity=0.8,
        symbol='circle',  # 渲染为圆形标记,配合3D场景呈现球体效果
        line=dict(width=0)  # 关闭边框,更贴近球体视觉
    )
)])

fig.update_layout(scene=dict(
    xaxis_title='X轴',
    yaxis_title='Y轴',
    zaxis_title='Z轴'))
fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:28:38