使用Plotly绘制散点矩阵报错:dimensions_0非数据框列名
问题分析与解决
错误原因
- 你把特征列转成numpy数组后执行了
df = df.reshape(-1),直接把二维特征数组变成了一维数组,此时传给Plotly的是仅含一列(列名默认是0)的结构,自然找不到diffTime这类列名。 color="out"的写法有误:你单独把标签存在out变量里,但Plotly的scatter_matrix需要从传入的data_frame中读取列名,不能直接传变量名。
修正后的代码
import pandas as pd import plotly.express as px # 读取数据 dataset = pd.read_csv(r'/Users/Downloads/dataset/datasets/mydatasets/out_4.csv') # 整合需要的特征列与标签列,生成可视化用DataFrame vis_df = dataset[["diffTime","diffP","diffS","diffH","diffE","diffA", "labels"]] features = ["diffTime","diffP","diffS","diffH","diffE","diffA"] fig = px.scatter_matrix( vis_df, # 传入保留列名的DataFrame dimensions=features, color="labels" # 直接引用DataFrame中的标签列名 ) fig.update_traces(diagonal_visible=False) fig.show()
关键改动说明
- 放弃将DataFrame转成numpy数组的操作,直接用Pandas DataFrame作为Plotly输入,保留完整列名信息。
- 将标签列
labels和特征列整合到同一个DataFrame中,让color参数可以直接调用列名。 - 移除破坏数据结构的
reshape(-1)操作,保证特征列是二维多列结构,符合scatter_matrix的输入要求。
内容的提问来源于stack exchange,提问作者MinaMRM
相关产品推荐
相关产品推荐

