Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB绘图上的图例,其中每个点分别分散_Matlab_Legend_Scatter - Fatal编程技术网

MATLAB绘图上的图例,其中每个点分别分散

MATLAB绘图上的图例,其中每个点分别分散,matlab,legend,scatter,Matlab,Legend,Scatter,我试图在Matlab中的散点图上绘制图例,问题是我绘制图形的方式涉及到将每个点(其中有>10000个点)分别分散到一个for循环中。代码如下: figure; xlabel ('\omega_u/p','FontSize',24,'FontName','Helvetica') ylabel ('u_0/\alpha g','FontSize',24,'FontName','Helvetica') set (findobj('type','axes'),'FontSize',24,'FontNam

我试图在Matlab中的散点图上绘制图例,问题是我绘制图形的方式涉及到将每个点(其中有>10000个点)分别分散到一个for循环中。代码如下:

figure;
xlabel ('\omega_u/p','FontSize',24,'FontName','Helvetica')
ylabel ('u_0/\alpha g','FontSize',24,'FontName','Helvetica')
set (findobj('type','axes'),'FontSize',24,'FontName','Helvetica')
hold on;

for j= 1:1:length(SURVIVALMODE)
 if SURVIVALMODE(j,1) == 1;
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'g','fill');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==6
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'b','fill');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==13
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'r','fill');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==14
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'k','fill');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==21
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'c','fill');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==29
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'m','fill');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==10
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'b','^');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==17
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'r','^');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==18
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'k','^');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==25
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'c','^');
 elseif SURVIVALMODE(j,1) == 0 && SURVIVALMODE(j,2)==33
     scatter(U0OMEGAU(j,2)/p,U0OMEGAU(j,1)/(alpha*g),14,'m','^');
 end
end

U0OMEGAU是一个矩阵,包含所有要绘制的点生存模式包含如何绘制这些点的条件。当我使用传统图例时,它试图制作一个包含已绘制的每个点的图例,而不是不同类型的点。我试着用每种类型的一个点创建一个虚拟散点图,并从中创建一个图例,但没有成功。任何帮助都将不胜感激

解决这一问题的一个秘密方法是,在实际点显示区域之外,为要显示在图例中的每个数据预先绘制一个点,然后使用
设置打印边界以排除这些伪点。图例条目将对应于这些点

例如,假设要绘制两个数据集,但在图例中按相反顺序放置,则可以执行以下操作:

x = 0:pi/100:2*pi;
y1 = sin(x); % I want this in green
y2 = cos(x); % I want this in red
% If for some reason I want to plot y1 before y2,
% but use a different order in the legend, I can do:
yOut = min([y1 y2]) - 1;
figure;
plot(0, yOut, 'r', 0, yOut, 'g');
hold on;
plot(x, y1, 'g', x, y2, 'r');
hold off;
legend('Red plotted 2nd', 'Green plotted 1st');
axis([min(x) max(x) min([y1 y2]) max([y1 y2])]);
这也适用于您的案例。也许有一个更直截了当的答案,但这对我来说很有效