我有一些如下所示的信息示例,我想基于“簇”(例如0,1,2)制作具有不同散点颜色的3D散点图
ID TP ALB BUN clusters
1 153 101 698 1
2 100 90 400 0
3 50 199 500 1
4 113 102 340 2
目前我已经尝试过:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 8))
ax1 = fig.add_subplot(111,projection='3d')
for i in range(len(df_tr)):
x, y, z = df_tr.iloc[i]['BUN'], df_tr.iloc[i]['ALB'], df_tr.iloc[i]['TP']
ax1.scatter(x, y, z, c=['blue'])
ax1.text(x, y, z, '{0}'.format(df_tr.iloc[i]
['clusters']), size=12)
ax1.set_xlabel('BUN')
ax1.set_ylabel('ALB')
ax1.set_zlabel('TP')
ax1.legend('012')
plt.show()
获取散点图的结果具有群集信息(0、1和2),但是是否有使用Axes3D根据特定列上的ifnormation更改散点图颜色的信息?
答案 0 :(得分:1)
例如,根据您期望的不同clusters
(只要不是很高)的期望数量列出颜色
colors = ['blue', 'green', 'red']
然后仅使用clusters
值作为列表的索引来获取颜色;
colors = ['blue', 'green', 'red']
for i in range(len(df_tr)):
x, y, z = df_tr.iloc[i]['BUN'], df_tr.iloc[i]['ALB'], df_tr.iloc[i]['TP']
ax1.scatter(x, y, z, c=colors[int(df_tr.iloc[i]['clusters'])])