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

如何确定3D散点图的中心?z轴取值问题求解

如何确定3D散点图的中心(z轴取值问题)

我一直在尝试绘制3D散点图的中心,但在确定z轴取值时遇到问题,希望找到能让中心落在散点图上的z轴值,请问如何确定3D散点图的中心?


第一次尝试代码

import xlrd
import numpy as np
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# axes = [5, 5, 5]
# Create Data
# data = np.ones(axes, dtype=np.bool)
df=pd.read_csv('wr.csv')
df=df.sample(frac=1)
# print(df.head())
fig = plt.figure()
#---------------1st plt-------------------------
ax = fig.add_subplot(projection='3d')
ax.scatter(df.index, df['volatile acidity'], np.ones(df.shape[0]), s=5,color='red')
ax.scatter(np.mean(df.index),np.mean(df['volatile acidity']),1,color='black',s=200)

图1

图1


第二次尝试代码

import xlrd
import numpy as np
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# axes = [5, 5, 5]
# Create Data
# data = np.ones(axes, dtype=np.bool)
df=pd.read_csv('wr.csv')
df=df.sample(frac=1)
# print(df.head())
fig = plt.figure()
#---------------1st plt-------------------------
ax = fig.add_subplot(projection='3d')
#ax.scatter(df.index, df['volatile acidity'], np.ones(df.shape[0]), s=5,color='red')
#ax.scatter(np.mean(df.index),np.mean(df['volatile acidity']),1,color='black',s=200)
ax.scatter(df.index, df['volatile acidity'], np.square(df['volatile acidity']), s=5,color='black')
ax.scatter(np.mean(df.index),np.mean(df['volatile acidity']),1,color='orange',s=20)

图2

图2


解决方法

要让中心点落在3D散点图的点集上,核心是让中心的z轴值与散点z轴数据的统计中心匹配,具体操作如下:

  1. 对齐散点z轴的取值逻辑

    • 第一次尝试中所有散点z值固定为1,所以中心z值设为1是正确的(图1里的黑色大圆点就是准确的中心)。
    • 第二次尝试中散点z值是volatile acidity的平方,此时不能再硬设z=1,必须用z轴数据的均值作为中心z值。
  2. 修改中心绘制代码
    计算z轴数据的均值,替换硬编码的z值:

    # 计算散点z轴数据的均值
    z_mean = np.mean(np.square(df['volatile acidity']))
    # 绘制匹配的中心
    ax.scatter(np.mean(df.index), np.mean(df['volatile acidity']), z_mean, color='orange', s=200)
    
  3. 通用逻辑总结
    3D散点图的中心是三个轴数据的均值组成的坐标点:

    • x轴中心:np.mean(df.index)
    • y轴中心:np.mean(df['volatile acidity'])
    • z轴中心:np.mean(散点的z轴数据数组)

按此逻辑设置,中心点会准确落在散点图的统计中心位置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:35:32