在gscatter中获得更明智色彩的简单方法

时间:2015-03-17 19:39:04

标签: matlab graph matlab-figure

我正在寻找一种让gscatter选择更明智色彩的简单方法。

如下图所示,第3组和第4组颜色非常相似,很难区分。

我正在使用gscatter(X(:,1),X(:,4),assigns , [], [] )绘制我的数据。

我知道我可以使用scatter通过创建一个与我拥有的组数量具有相同颜色数量的色彩图来手动获得更明智的色彩,但是我如何获得像gscatter产生的好传奇没有循环每个组?

那么,是否有一种简单的(r)方法可以使用gscatter获得更明智的颜色?

感谢。

enter image description here

2 个答案:

答案 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)

enter image description here

答案 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');

输出:

enter image description here