在 gscatter 中获得更合理颜色的简单方法
Simple way to get more sensible colors in gscatter
我正在寻找一种让 gscatter
选择更合理的颜色的简单方法。
如下图所示,第3组和第4组的颜色非常相似,很难区分。
我正在使用 gscatter(X(:,1),X(:,4),assigns , [], [] )
绘制我的数据。
我知道我可以使用 scatter
通过创建颜色图来手动获得更合理的颜色,该颜色图的颜色数量与我拥有的组数相同,但是我如何获得像这样的漂亮图例gscatter 生成而不循环遍历每个组?
那么,有没有一种简单的方法可以通过 gscatter
获得更合理的颜色?
谢谢。
这是一种权衡,您可以在其中使用 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');
输出:
gscatter
的第四个参数是颜色规范。根据documentation,只能用字母来定义颜色:
gscatter(x,y,group,clr,sym,siz)
specifies the color, marker type, and size for each group. clr
is a string array of colors recognized by the plot
function. The default for clr
is 'bgrcmyk'
.
但是如果你输入 open gscatter
并查看第一行的注释(Matlab 的 ),惊喜!
GSCATTER(X,Y,G,CLR,SYM,SIZ) specifies the colors, markers, and
size to use. CLR is either a string of color specifications or
a three-column matrix of color specifications.
因此您可以使用颜色图矩阵来定义您想要的颜色(至少在 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)
编辑:在较新的 Matlab 版本中(我检查了 R2019a)文档确实提到了将颜色指定为三列矩阵的可能性:
clr
: Marker colors: character vector or string scalar of colors | matrix of RGB triplet values.
我正在寻找一种让 gscatter
选择更合理的颜色的简单方法。
如下图所示,第3组和第4组的颜色非常相似,很难区分。
我正在使用 gscatter(X(:,1),X(:,4),assigns , [], [] )
绘制我的数据。
我知道我可以使用 scatter
通过创建颜色图来手动获得更合理的颜色,该颜色图的颜色数量与我拥有的组数相同,但是我如何获得像这样的漂亮图例gscatter 生成而不循环遍历每个组?
那么,有没有一种简单的方法可以通过 gscatter
获得更合理的颜色?
谢谢。
这是一种权衡,您可以在其中使用 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');
输出:
gscatter
的第四个参数是颜色规范。根据documentation,只能用字母来定义颜色:
gscatter(x,y,group,clr,sym,siz)
specifies the color, marker type, and size for each group.clr
is a string array of colors recognized by theplot
function. The default forclr
is'bgrcmyk'
.
但是如果你输入 open gscatter
并查看第一行的注释(Matlab 的
GSCATTER(X,Y,G,CLR,SYM,SIZ) specifies the colors, markers, and
size to use. CLR is either a string of color specifications or
a three-column matrix of color specifications.
因此您可以使用颜色图矩阵来定义您想要的颜色(至少在 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)
编辑:在较新的 Matlab 版本中(我检查了 R2019a)文档确实提到了将颜色指定为三列矩阵的可能性:
clr
: Marker colors: character vector or string scalar of colors | matrix of RGB triplet values.