R*******y 发帖数: 19 | 1 比如一组数据x和y,用plot(x,y,'b-*')作图,则*的个数是与length(x)相等的。有没
有一种办法,让标注不要那么密集。比如x本来有1000个点,我的图是按1000个点画的
(为了显得连续),但*只显示50个,也就是每隔20个真实数据点作一个标注。
有一种方法是先画一个没有标*的,再把数据隔20点采一次样,得到一组新的采样后的
x2,y2,然后再用纯*无线图画到同一个figure上,等于覆盖在原曲线上。但是这样有一
个弊病:如果用legend显示数据类型,会出现两种不同标注,一组是有1000个点的纯曲
线图,一组是有50个点的纯*点图,相当于是两条曲线--这一点是无法骗过legend函
数的。:P 用这个方法,除非你不标legend,否则是不可取的。
有没有其他办法,能够实现我想要的那种功能呢?(概念上应该得在一条曲线上,否则
legend这里肯定会有问题……)
谢谢高手指教! | p*****e 发帖数: 310 | 2 印象中这个密度是可以设置的,查查matlab帮助的。另外legend也可以做设置
【在 R*******y 的大作中提到】 : 比如一组数据x和y,用plot(x,y,'b-*')作图,则*的个数是与length(x)相等的。有没 : 有一种办法,让标注不要那么密集。比如x本来有1000个点,我的图是按1000个点画的 : (为了显得连续),但*只显示50个,也就是每隔20个真实数据点作一个标注。 : 有一种方法是先画一个没有标*的,再把数据隔20点采一次样,得到一组新的采样后的 : x2,y2,然后再用纯*无线图画到同一个figure上,等于覆盖在原曲线上。但是这样有一 : 个弊病:如果用legend显示数据类型,会出现两种不同标注,一组是有1000个点的纯曲 : 线图,一组是有50个点的纯*点图,相当于是两条曲线--这一点是无法骗过legend函 : 数的。:P 用这个方法,除非你不标legend,否则是不可取的。 : 有没有其他办法,能够实现我想要的那种功能呢?(概念上应该得在一条曲线上,否则 : legend这里肯定会有问题……)
| i**g 发帖数: 134 | 3 h0=plot(x,y,'b-*','visible','off');
hold on;
h1=plot(x,y,'b-');
h2=plot(x(1:20:end),y(1:20:end),'*');
h3=plot(xother,yother,'r-');
legend([h0,h3]);
【在 R*******y 的大作中提到】 : 比如一组数据x和y,用plot(x,y,'b-*')作图,则*的个数是与length(x)相等的。有没 : 有一种办法,让标注不要那么密集。比如x本来有1000个点,我的图是按1000个点画的 : (为了显得连续),但*只显示50个,也就是每隔20个真实数据点作一个标注。 : 有一种方法是先画一个没有标*的,再把数据隔20点采一次样,得到一组新的采样后的 : x2,y2,然后再用纯*无线图画到同一个figure上,等于覆盖在原曲线上。但是这样有一 : 个弊病:如果用legend显示数据类型,会出现两种不同标注,一组是有1000个点的纯曲 : 线图,一组是有50个点的纯*点图,相当于是两条曲线--这一点是无法骗过legend函 : 数的。:P 用这个方法,除非你不标legend,否则是不可取的。 : 有没有其他办法,能够实现我想要的那种功能呢?(概念上应该得在一条曲线上,否则 : legend这里肯定会有问题……)
| R*******y 发帖数: 19 | 4 好像帮助里没有mark密度的设置耶……
legend的方法我知道怎么办了。但是那样似乎理论上不是efficient的做法。
最好能用mark设置的方法,这样实际画出的就只是一幅图。:)
【在 p*****e 的大作中提到】 : 印象中这个密度是可以设置的,查查matlab帮助的。另外legend也可以做设置
| b*****l 发帖数: 9499 | 5 赞
【在 i**g 的大作中提到】 : h0=plot(x,y,'b-*','visible','off'); : hold on; : h1=plot(x,y,'b-'); : h2=plot(x(1:20:end),y(1:20:end),'*'); : h3=plot(xother,yother,'r-'); : legend([h0,h3]);
| m***n 发帖数: 581 | 6 同赞,我也一直找一个解决办法。虽然这样用了三条曲线来表示一条,但也凑合能用了
。 | z***n 发帖数: 3 | 7 这样貌似可以,和lz一样画两条线,但是只有一个legend
x=linspace(0,2*pi,100);
y=sin(x);
xx=[pi/2,3/2*pi];
yy=sin(xx);
hline=plot(x,y,'b');
hold on
hdots=plot(xx,yy,'r*');
hg=hggroup;
set(hline,'parent',hg);
set(hdots,'parent',hg);
set(get(get(hg,'Annotation'),'LegendInformation'),'IconDisplayStyle','on');
hLegend=legend(hg,'extremes'); |
|