根据0或1值在Matlab中绘制彩色散点图

根据0或1值在Matlab中绘制彩色散点图,matlab,colors,matlab-figure,scatter-plot,scatter,Matlab,Colors,Matlab Figure,Scatter Plot,Scatter,我填充一个网格data=0(n,n)带有0和1(如果您愿意,也可以将其视为邻接网格)。我只想根据该点的值是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. 有什么建议吗?您告诉matlab只在需要笛卡尔积(1:nX1:n)的地方

我填充一个网格
data=0(n,n)带有0和1(如果您愿意,也可以将其视为邻接网格)。我只想根据该点的值是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.

有什么建议吗?

您告诉matlab只在需要笛卡尔积(1:nX1:n)的地方绘制n个点((1,1),(2,2),…,(n,n))。 试一试

[X,Y]=meshgrid(1:n,1:n)


散布(X(:),Y(:),10,数据(:)

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)。

您有图像处理工具箱吗?
imshow(数据)
有没有可能奏效?如果你是对的,你还可以根据需要更改颜色贴图,这太尴尬了!现在,这是工作,有没有关于如何改变它使用的颜色的想法?一个是深红色,一个是深蓝色或其他什么的,很难告诉他们apartc=[1 0;0 0 1];彩色地图(c);你可以改变c来获得你想要的颜色