找回密码
 注册
Simdroid-非首页
查看: 135|回复: 7

关于matlab画图时,曲线上的标记间距问题

[复制链接]
发表于 2011-4-15 11:49:17 | 显示全部楼层 |阅读模式 来自 江苏南京
各种标记点属性选项
选 项 意 义 选 项意 义
'.' 用点号绘制各数据点 '^' 用上三角绘制各数据点
'+' 用'+'号绘制各数据点 'v' 用下三角绘制各数据点
'*' 用'*'号绘制各数据点 '>' 用右三角绘制各数据点
' .' 用'.'号绘制各数据点 '<' 用左三角绘制各数据点
's'或squar 用正方形绘制各数据点'p' 用五角星绘制各数据点
'd'或diamond用菱 形绘制各数据点 'h' 用六角星绘制各数据点
这些选项可以连在一起用,如:'-.g'表示绘制绿色的点划线,'g+'表示用绿
色的 '+'号绘制曲线.


clear all
clc
t=0:pi/50:2*pi;
y=sin(4*t).*sin(t)/2;
plot(t,y,'-bs','LineWidth',2,... %设置线的宽度为2
'MarkerEdgeColor','k',... %设置标记点边缘颜色为黑色
'MarkerFaceColor','y',... %设置标记点填充颜色为黄色
'MarkerSize',10) %设置标记点的尺寸为10

画出来的图如下所示,
假如时间t的分割较细的话,曲线就被盖住了,
想知道:如何控制曲线上标记的数量,而不是每个数据点都显示一个标记,

谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2011-4-15 12:43:38 | 显示全部楼层 来自 河北石家庄
Simdroid开发平台
楼主,matlab对曲线和离散点的 绘制是通过x-y数据对进行的,你用hold on可以在一张图上叠着画。画曲线时,可以把所以点画上,画离散点时,抽取你想显示的点的数据对来画就可以了 。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-15 12:54:16 | 显示全部楼层 来自 江苏南京
谢谢楼上兄弟的回复,
感觉matlab在处理这个问题上实在是太麻烦了,
很多条曲线,必须加上标记以区别,并且matalb的线型有太少了
这个图看来还是改用别的软件吧,呵呵
回复 不支持

使用道具 举报

发表于 2011-4-16 00:00:49 | 显示全部楼层 来自 英国
雅克比兄弟,线型加上LineWidth','MarkerEdgeColor', 'MarkerFaceColor', 'MarkerSize',
这5个参数的所有可选项组合在一起,能画多少图啊!!!!!!!!!!!!!!!!!!!!
尤其是markersize和线宽是数字指定,无数啊

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-16 14:24:48 | 显示全部楼层 来自 江苏南京
本帖最后由 jacobi 于 2011-4-16 14:26 编辑
雅克比兄弟,线型加上LineWidth','MarkerEdgeColor', 'MarkerFaceColor', 'MarkerSize',
这5个参数的所有可选项组合在一起,能画多少图啊!!!!!!!!!!!!!!!!!!!!
尤其是markersize和线宽是数字指定,无数啊
libralibra 发表于 2011-4-16 00:00



兄台没搞清楚我的意思阿,
比如下面的m文件画图,你用标识的话,
所有的曲线不是都堆在一起了么

clear all
clc
a=1:0.2:2
t=0:pi/50:2*pi;
for j=1:length(a)
    y(:,j)=a(j)*sin(4*t).*sin(t)/2;
    plot(t,y(:,j),'-b','LineWidth',2)
%     ,... %设置线的宽度为2
%         'MarkerEdgeColor','k',... %设置标记点边缘颜色为黑色
%         'MarkerFaceColor','y',... %设置标记点填充颜色为黄色
%         'MarkerSize',10) %设置标记点的尺寸为10
    hold on
end
z=[t',y]
save sinzz.dat z -ascii

这个是用其他软件做的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-16 14:31:03 | 显示全部楼层 来自 江苏南京
再比如一条曲线,共有1000个离散点,
现在要用标识(标识符号为方形、圆形、三角形等等均可)该曲线,
显然不可能在一条曲线上标识1000个标识符号吧,
那么怎么仅仅显示少量几个标识符号,

别说直接用线型、颜色啥的区分,这个都明白的,:lol
回复 不支持

使用道具 举报

发表于 2011-4-16 20:46:08 | 显示全部楼层 来自 英国
本帖最后由 nwcwww 于 2011-4-16 21:14 编辑

其实也没什么麻烦的吧,多几行语句而已。
clear all;clc;
a=1:0.2:2;t=0:pi/50:2*pi;
h=zeros(length(a),1);%store handles
markers = {'d','s','o','^','v','*'};
hold on;
for j=1:length(a)
y(:,j)=a(j)*sin(4*t).*sin(t)/2;
cc=bitget(j,1:1:3)/1.1;% generate line colors
[ys,ind]=max(y(:,j));xs=t(ind);
plot(t,y(:,j),'color',cc,'linewidth',2);
h(j)=plot(xs,ys,'marker',markers{j},'markersize',12,'color',cc);
end
legend(h(:),'B','C','D','E','F','G');

和你那副图一样,只标注了一个点。
想多画几个点就提取列数或者用interp1.

效果图,没做啥美化工作。改改线形什么的会好看不少。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-4-22 15:18:42 | 显示全部楼层 来自 英国
本帖最后由 libralibra 于 2011-4-22 15:21 编辑

就跟7楼朋友一样,你可以一次指定所有的线性,然后调用
单独制定某个位置有marker,只要找到那个位置就可以
颜色也可以用三原色自己调[r,g,b],选择多得很
  1. c = {'ks-','ro-.','b^-','gv:','md--','cx-'};
  2. for j=1:length(a)
  3.     y(:,j)=a(j)*sin(4*t).*sin(t)/2;
  4.     plot(t,y(:,j),c{j},'LineWidth',2);
  5.     hold on
  6. end
  7. legend('B','C','D','E','F','G','Location','North');
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 21:19 , Processed in 0.051583 second(s), 20 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表