【问题标题】:Color scatter plot in Matlab according to 0 or 1 valueMatlab中根据0或1值的颜色散点图
【发布时间】:2015-04-07 06:32:17
【问题描述】:

我用 0 和 1 填充网格 data=zeros(n,n);(如果您愿意,也可以将其视为邻接网格)。我只想根据该点的值是0还是1来绘制带有颜色的网格。例如,

scatter(1:n,1:n,data);

它给了我错误:

Error using scatter (line 77)
C must be a single color, a vector the same length as X, or an M-by-3 matrix.

有什么建议吗?

【问题讨论】:

  • 你有图像处理工具箱吗? imshow(data) 有机会工作吗?如果需要,您还可以更改颜色图

标签: matlab colors matlab-figure scatter-plot scatter


【解决方案1】:

scatter 允许您根据“Z”值为 每个 点绘制具有不同选项(颜色、大小等)的点,但它会创建一个许多图形对象(每个点一个)。

在您的情况下,您只有 2 个 子集 数据(在您的所有点中)。值为1 和值为0 的点。所以另一种选择是提取这两个子集,然后绘制每个子集与每个子集的一组公共属性。

%% // prepare test data
n = 10 ;
data=randi([0 1],n); %// create a 10x10 matrix filled with `0` and `1`

%% // extract the 2 subsets
[x0 , y0] = find( data == 0 ) ;
[x1 , y1] = find( data == 1 ) ;

%% // display
figure ; axes('Nextplot','add')

plotOptions = {'LineStyle','none','MarkerEdgeColor','k','MarkerSize',10} ; %// common options for both plots 

plot(x0,y0,'o','MarkerFaceColor','r', plotOptions{:} ) %// circle marker, red fill
plot(x1,y1,'d','MarkerFaceColor','g', plotOptions{:} ) %// diamond marker, green fill

这样您就可以完全控制每个子集属性(您可以控制大小、颜色、形状等......)。而且您只有 2 个图形对象要处理(而不是 n^2)。

【讨论】:

    【解决方案2】:

    您告诉 matlab 仅在您想要笛卡尔积 (1:nX1:n) 的地方绘制 n 个点 ((1,1), (2,2), ..., (n,n))。 试试

    [X,Y] = 网格网格(1:n,1:n);

    scatter(X(:), Y(:), 10, data(:));

    【讨论】:

    • 哈哈你是对的,这很尴尬!现在它正在工作,关于如何更改它使用的颜色的任何想法?一个是深红色,一个是深蓝色什么的,很难区分
    • c=[1 0 0; 0 0 1];颜色图(c);你可以改变 c 来获得你想要的颜色
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2019-02-11
    • 1970-01-01
    • 2013-09-20
    相关资源
    最近更新 更多