我正在寻找一种让gscatter
选择更明智色彩的简单方法。
如下图所示,第3组和第4组颜色非常相似,很难区分。
我正在使用gscatter(X(:,1),X(:,4),assigns , [], [] )
绘制我的数据。
我知道我可以使用scatter
通过创建一个与我拥有的组数量具有相同颜色数量的色彩图来手动获得更明智的色彩,但是我如何获得像gscatter产生的好传奇没有循环每个组?
那么,是否有一种简单的(r)方法可以使用gscatter
获得更明智的颜色?
感谢。
答案 0 :(得分:5)
gscatter
的第四个参数是颜色规范。根据{{3}},只能使用字母来定义颜色:
scatter(x,y,group,clr,sym,siz)
指定每个组的颜色,标记类型和大小。clr
是由plot
函数识别的字符串数组。clr
的默认值为'bgrcmyk'
。
但如果您输入open gscatter
并查看第一行中的评论(Matlab' s documentation),那就太惊喜了!
GSCATTER(X,Y,G,CLR,SYM,SIZ)指定颜色,标记和
要使用的尺寸。 CLR是一串颜色规格或
颜色规格的三列矩阵。
因此,您可以使用色彩图矩阵来定义所需的颜色(至少在Matlab R2014b中)。
示例:
load discrim
group(1:3:end) = 3; %// borrowing Benoit_11's idea to create two more groups
group(2:2:end) = 4;
cmap = hsv(4); %// define your colormap here
gscatter(ratings(:,1), ratings(:,2), group, cmap)
答案 1 :(得分:4)
以下是您使用gscatter
及其精彩图例功能的某种权衡,但如果需要,您需要循环浏览每个组以手动设置颜色。
诀窍是在调用gscatter
期间分配输出,然后更改Color
属性。你当然可以改变你想要的任何财产。
在简单的示例中,我为每个组生成随机颜色,但您可以使用所需的颜色轻松访问自定义颜色表的条目。:
clear
clc
close all
load discrim
%// Just creating 2 more groups for the demo.
group(1:3:end) = 3;
group(2:2:end) = 4;
figure;
%// Retrieve handles of the scatter plot
hScatter = gscatter(ratings(:,1),ratings(:,2),group);
%// Set colors manually. You can use your own colormap.
for k = 1:numel(hScatter)
set(hScatter(k),'Color',rand(1,3))
end
xlabel('climate');
ylabel('housing');
输出: