我画了四条拟合的直线,数据点要求有颜色和形状的区别,拟合后的表达式(直线)也要有不同颜色(第四条的横坐标不太一样,所以没有在循环里面),我最初写的代码见附录1,图片如图1-1所示。这个图有一个缺点是,散点图的形状是我想要的,但是颜色是随机的,我希望散点图的颜色和直线的颜色也是对应的,只要粉红、蓝色、红色、黑色四种,于是我把代码中字符矩阵color_shape由['v','^','o','s']改为了['mv','b^','ro','ks'],但是却出现了图1-2的图形,多了两条线(从变成了6条),而且只出现了头两组散点图,后面的方形和圆形的散点图不见了。
请问我代码错在哪里?谢谢!
附录1:
clear all
b=zeros(2,4);
stats=zeros(4,4);
voriginal=[31.20 ,29.5,27.5,26.76,26.02;32.38,30.93,28.13,27.45,25.62;34.07,29.90,28.57,27.67,24.53;36.03,33.37,27.92,24,21];
V=voriginal';
density=[1000,10000,100000,500000,1000000]';
density_6x=[1000,10000,50000,100000,200000]';
x=log10(density);
x_6x=log10(density_6x);
X=[ones(size(x)),x];
X_6x=[ones(size(x_6x)),x_6x];
x1=[2.5:6.5];
color=['m','b','r','k']
color_shape=['v','^','o','s']
for i=1:3%画拟合曲线和对应的散点
[b_i,bint_i,r_i,rint_i,stats_i]=regress(V(:,i),X)
b(:,i)=[b_i(:,1)];
stats(i, =[stats_i(1, ];
y_i=b_i(1,1)+b_i(2,1).*x1;
figure (1);
plot(x1,y_i,color(i),X(:,2),V(:,i),color_shape(i));
hold on;
end
[b_4,bint_4,r_4,rint_4,stats_4]=regress(V(:,4),X);%画第四条拟合曲线
b(:,4)=[b_4(:,1)];
stats(4, =[stats_4(1, ];
y_4=b_4(1,1)+b_4(2,1).*x1;
figure (1);
plot(x1,y_4,color(4),X_6x(:,2),V(:,4),'rs');
hold on;%拟合作图结束
![matlab 散点图和直线图的颜色以及形状问题,谢谢]()
图1-1.jpg
![matlab 散点图和直线图的颜色以及形状问题,谢谢-1]()
图1-2.jpg |