24小时热门版块排行榜    

查看: 2768  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

疾凤劲草

铁杆木虫 (正式写手)

Entertainment

[求助] matlab 散点图和直线图的颜色以及形状问题,谢谢 已有1人参与

我画了四条拟合的直线,数据点要求有颜色和形状的区别,拟合后的表达式(直线)也要有不同颜色(第四条的横坐标不太一样,所以没有在循环里面),我最初写的代码见附录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
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
疾凤劲草: 金币+6, ★★★很有帮助, 完美解决了额我的问题 2015-05-03 11:58:16
将color_shape定义为cell数组,并在画图时用cell方式调用 color_shape{i}
color_shape={'mv','b^','ro','ks'};
plot(x1,y_i,color(i),X(:,2),V(:,i),color_shape{i});
知其然,知其所以然。
3楼2015-05-03 09:43:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

疾凤劲草

铁杆木虫 (正式写手)

Entertainment

笑脸是  冒号和右括号哈,
2楼2015-05-03 00:55:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

疾凤劲草

铁杆木虫 (正式写手)

Entertainment

引用回帖:
3楼: Originally posted by mygt_hit at 2015-05-03 09:43:27
将color_shape定义为cell数组,并在画图时用cell方式调用 color_shape{i}
color_shape={'mv','b^','ro','ks'};
plot(x1,y_i,color(i),X(:,2),V(:,i),color_shape{i});

MATLAB用的不多,这个应该是很基础的问题吧,我还是有点不明白,我原来那个代码,只放入形状的代码就可以画出来,颜色和形状代码一起放进去的时候为啥就不行了呢,谢谢!
4楼2015-05-03 12:00:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

★ ★
疾凤劲草: 金币+2, ★★★很有帮助, 以后多多交流,谢谢指导。 2015-05-03 13:59:24
引用回帖:
4楼: Originally posted by 疾凤劲草 at 2015-05-03 12:00:22
MATLAB用的不多,这个应该是很基础的问题吧,我还是有点不明白,我原来那个代码,只放入形状的代码就可以画出来,颜色和形状代码一起放进去的时候为啥就不行了呢,谢谢!...

如果用原来的方式,字符矩阵color_shape由['v','^','o','s']改为了['mv','b^','ro','ks'],这个操作实际是字符串拼接,这时的color_shape是一个8*1的字符矩阵[mvb^roks],因此i从1变到3时,color_shape只用到了前三个字符mvb,而不是期望的'mv'  'b^' 'ro'。mvb应该是对应不同的plot设置,所以导致出现非预期的结果。

你可以自己试验一下,观察一下规律。
知其然,知其所以然。
5楼2015-05-03 12:11:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见