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

Plotly散点图绘制逻辑及NumPy数组绘图的X坐标疑问

问题分析与解答

核心逻辑拆解

你当前的px.scatter调用其实是指定了用数组的第5列数值作为X坐标,具体原因如下:

  • 当把二维NumPy数组arr传入px.scatter作为第一个参数(data_frame)时,Plotly会将其解析为类似DataFrame的结构:每一列对应一个特征(列名从0到6,共7列),每一行对应一个样本(行索引从0到4,共5行)。
  • 你传入的第二个参数len(arr)值为5,被直接赋值给px.scatter的x参数——这意味着Plotly会提取数据集中列名为5的所有值作为每个散点的X坐标。
  • 由于未显式指定y参数,Plotly默认使用数据集的行索引(即数组的行下标0~4)作为Y坐标。

验证对应关系

查看你的数组第5列(索引从0开始)的数值:

arr[:, 5]  # 输出:array([  3,  -6,   0,   3, -999])

这完全对应你观察到的散点坐标:

  • 行索引0 → X=3
  • 行索引1 → X=-6
  • 行索引2 → X=0
  • 行索引3 → X=3
  • 行索引4 → X=-999

扩展:绘制所有元素的散点图

如果你的需求是把数组中所有元素的数值作为X坐标,对应行索引作为Y坐标,需要先将数组扁平化并生成匹配的行索引数组:

import numpy as np
import plotly.express as px

arr = np.array([[1,2,3,1,2,3,4],[1,1,1,1,1,-6,4],[0,0,0,0,0,0,4],[-3,-2,-1,1,2,3,4],[1,1,15,1,2,-999,4]])
# 扁平化数组得到所有元素的X值
x_values = arr.flatten()
# 生成每个元素对应的行索引(每行7个元素,所以每个行索引重复7次)
y_values = np.repeat(np.arange(len(arr)), arr.shape[1])

fig = px.scatter(x=x_values, y=y_values, width=1000, height=500)
fig.update_layout(xaxis_title='array value', yaxis_title='index')
fig.show()

内容的提问来源于stack exchange,提问作者Mr.J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:48:10