如何实现Pandas DataFrame按label列指定颜色的3D可视化
你可以直接按照label分组分别绘制不同颜色的散点,逻辑清晰适合新手,完整可运行的示例代码如下:
import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 构造示例DataFrame,实际使用时替换为你自己的DataFrame即可 data = { 'X': [23,56,34,43,45,34,23,34,54], 'Y': [45,67,87,78,45,98,45,76,87], 'Z': [23,24,25,26,37,38,39,40,41], 'label': [0,0,0,0,1,1,1,1,1] } df = pd.DataFrame(data) # 创建3D绘图对象 fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(projection='3d') # 按label筛选数据,分别绘制对应颜色的散点 ax.scatter(df[df['label'] == 0]['X'], df[df['label'] == 0]['Y'], df[df['label'] == 0]['Z'], c='green', label='label=0') ax.scatter(df[df['label'] == 1]['X'], df[df['label'] == 1]['Y'], df[df['label'] == 1]['Z'], c='orange', label='label=1') # 补充图表信息 ax.set_xlabel('X维度') ax.set_ylabel('Y维度') ax.set_zlabel('Z维度') ax.legend() plt.show()
如果数据量较大不想拆分数据集,也可以用颜色映射的方式一次性绘制,写法更简洁:
# 颜色映射规则 color_map = {0: 'green', 1: 'orange'} # 生成每个点对应的颜色数组 point_colors = df['label'].map(color_map) # 一次性绘制所有散点 fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(projection='3d') ax.scatter(df['X'], df['Y'], df['Z'], c=point_colors) ax.set_xlabel('X维度') ax.set_ylabel('Y维度') ax.set_zlabel('Z维度') plt.show()
内容的提问来源于stack exchange,提问作者Soroosh Moghimi
相关产品推荐
相关产品推荐

