Matlab画图时Marker过多的解决方法,matlabmarker,matlabplotmarker,matlabmarker太密,matlabmarker稀疏点,matlabmarker种类,matlabmarkertype,matlabmarker实心,matlab中marker的类型,matlab中marker
Mynford(308491581
Matlab 画图时 Marker 太密了怎么办?
在写论文时,曲线图有时需添加Marker 以使图片更美观。可用Matlab 画
图有时Marker 会非常密集。这个问题在写论文碰到过,分享一下自己的解决方
法。为简便起见假定要画的图为正弦曲线。
Matlab 画图的代码如下:
M=400;
x=linspace(-pi,pi,M);
y=sin(2*x);
plot(x,y,'*r-')
xlabel('t/s')
ylabel('amplitude')
title('sine wave') ;
生成的图如图1所示,Marker过于密
集。 图1
1.减少样点的数量
产生 Marker 太多的原因
是数据太密集,可通过减少数
据的个数来减少Marker 数量。
上述代码中,令 M= 100 即可
得到图 2 。这种方法最简单。
对数据进行抽样,会造成数据
的丢失。故当数据变化缓慢时
尚可用。若相邻数据点的值变
化较大,则可能导致部分特征
点的丢失,从而引起图像的失
图2 M= 100 时的曲线图
真。
Mynford(308491581
2. 采用hold on 语句添加Marker
图3. hold on 添加Marker
代码如下:
M=400;
x=linspace(-pi,pi,M);
y=sin(2*x);
%marker 的参数定义
markSpacing=20; %每20个点添加一个Marker
x_marker=x(1:markSpacing:M);% Markers 的横坐标
y_marker=y(1:markSpacing:M); % Markers的纵坐标
hold on
plot(x_marker,y_marker,'r*') %画出
plot(x,y,'r-')
xlabel('t/s') ,ylabel('amplitude') ,title('sine wave') ;
该方法很灵活,可以自己控制Marker 的个数和类型,同时不会丢失原来的数据。
采用hold on 方法添加Marker 时,Legend 的添加
figure
x=linspace(-pi,pi,M);
y=sin(2*x);
%取出数据的前两个点用于生成legend
xlegend=x(1:2);
ylegend=y(1:2);
markSpacing=50;
x_marker=x(1:markSpacing:M);
Mynford(308491581
y_marker=y(1:markSpacing:M);
hold on
plot(xlegend,ylegend,'-ro') %添加legend
plot(x_marker,y_marker,'ro')
plot(x,y,'r-')
xlabel('t/s')
ylabel('Amplitude')
title('sine wave')
legend('The proposed method')
用方法 2 的一个缺点是不能自动生成正确的 legend,这个问题可通过Matlab
生成legend 时总是安顺序进行生成这一性质实现,从上述代码易看出实现方法。
上述代码运行效果如下:
图4 添加legend