由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Computation版 - MATLAB作图,有没有办法既画完整曲线又不标注所有样本点?
相关主题
问一个matlab作图的问题[转载] Matlab 3维作图求教!
a question about gnuplot[转载] matlab作图问题
matlab可以画这样的图吗matlab作图
matlab求助请教一个MATLAB作图问题
How to make 3d plots in Matlab?如何实现Matlab作图中的双纵轴
A MATLAB GUI Design question请教如何用MATLAB去fit一个多项式?
matlab 问题 求教Matlab作图时如何调整坐标轴范围的其中一个端点的值
问一个 3D 作图的谴责 MATLAB 不再支持 nojvm 下作图
相关话题的讨论汇总
话题: legend话题: plot话题: hg话题: 标注话题: 曲线
进入Computation版参与讨论
1 (共1页)
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');
1 (共1页)
进入Computation版参与讨论
相关主题
谴责 MATLAB 不再支持 nojvm 下作图How to make 3d plots in Matlab?
请教关于MATLAB的一个小问题A MATLAB GUI Design question
matlab help :(matlab 问题 求教
请问MATLAB中画bar时怎么让x变成对数坐标问一个 3D 作图的
问一个matlab作图的问题[转载] Matlab 3维作图求教!
a question about gnuplot[转载] matlab作图问题
matlab可以画这样的图吗matlab作图
matlab求助请教一个MATLAB作图问题
相关话题的讨论汇总
话题: legend话题: plot话题: hg话题: 标注话题: 曲线