unique_labels = unique(idx); colors = hsv(length(unique_labels)); % 生成不同颜色 figure; for i = 1:length(unique_labels) cluster_i = find(idx == unique_labels(i)); fprintf('Cluster %d includes %d samples: %s\n', i, length(cluster_i), num2str(cluster_i)); scatter3(x1(cluster_i), x2(cluster_i), x3(cluster_i), x4(cluster_i),25, colors(i,:), 'filled'); % 绘制散点图,增加点的大小 hold on; end xlabel('回报率'); ylabel('波动率'); zlabel('夏普比率'); % 添加 z 轴标签 wlabel('aa'); legend('Cluster 1', 'Cluster 2', 'Cluster 3','Cluster4'); % 修改 legend 的标注错误使用 scatter3 (line 118) 输入参数的数目不正确。修改代码
时间: 2023-11-30 07:03:15 浏览: 159
问题在于scatter3函数的第四个输入参数应该是点的大小,而你将x4作为输入参数传递给了它。因此,修改代码如下:
```matlab
unique_labels = unique(idx);
colors = hsv(length(unique_labels)); % 生成不同颜色
figure;
for i = 1:length(unique_labels)
cluster_i = find(idx == unique_labels(i));
fprintf('Cluster %d includes %d samples: %s\n', i, length(cluster_i), num2str(cluster_i));
scatter3(x1(cluster_i), x2(cluster_i), x3(cluster_i), 25, colors(i,:), 'filled'); % 修改点的大小为 25
% 绘制散点图,增加点的大小
hold on;
end
xlabel('回报率');
ylabel('波动率');
zlabel('夏普比率'); % 添加 z 轴标签
title('聚类结果可视化'); % 添加标题
legend('Cluster 1', 'Cluster 2', 'Cluster 3','Cluster 4'); % 修改 legend 的标注错误
```
如果你还想增加点的透明度,可以将scatter3函数的最后一个参数(即alpha值)设为0.5,表示50%的透明度。
阅读全文