Matlab中用plot画图,x轴和y轴比例不一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab中用plot画图,x轴和y轴比例不一致相关的知识,希望对你有一定的参考价值。
两个问题:
1、Matlab中用plot画图时,x轴和y轴比例不一致,想把x轴和y轴比例调成一致,也就是让x轴和y轴上的同样0.5看起来距离也是一样的。
2、想把x轴和y轴的坐标线放在中间(0,0)的位置
目前的显示效果如下图所示:
目前使用的代码如下:
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4);
% 离散数据点
x=load('C:\Users\kkk\Desktop\Total.txt');
p0=[1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p=nlinfit(x,zeros(size(x,1),1),F,p0);
plot(x(:,1),x(:,2),'ro');
hold on;
xmin=min(x(:,1));
xmax=max(x(:,1));
ymin=min(x(:,2));
ymax=max(x(:,2));
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]);
title('曲线拟合');
legend('样本点','拟合曲线')
使用数据如下:
http://pan.baidu.com/s/1beuwvc
在线等,急!
figure axe1 = axes('position', [.13, .13, .74, .23]); axe2 = axes('position', [.13, .40, .74, .50]); set(gcf, 'position', [532 197 951 781]),首先,position的值是[左,底,宽, 高] ,这个一看就明白了,四点确定了一个图形的所有,但是这里一定要注意,gcf和axe的不同, axe的母句柄是figre,所以,axe的数字都是小于1的,这个数字的意义是在figure里面的比例,整个figure是1。但是,对于figure而言,不是这样的,因为经常会在x轴有日期啊各种,所以figure的大小很重要,这里的figure大小就是真实的大小,和屏幕分辨率有关,分辨率是多少,最大就是多少。具体操作如下:
1、打开软件
2、输入plot(x,y,x,g,)
3、输入legend(“sin(x)”,“cox(x)”)
4、得出
参考技术AMatlab中用plot画图,x轴和y轴比例不一致是设置错误造成的,解决方法为:
1、首先来一列数据,如果是单独写在两个图形上。
2、如果要写在一个图形上,使用双坐标:x = 0:0.01:20;y1 = 200*exp(-0.05*x).*sin(x);y2 = 0.8*exp(-0.5*x).*sin(10*x);figure;plotyy(x,y1,x,y2)。
3、可以通过如下方式对不同的曲线进行赋值:figure;[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);title('Multiple Decay Rates');xlabel('Time (\\musec)');ylabel(hAx(1),'Slow Decay') ;ylabel(hAx(2),'Fast Decay');hAx(1)和hAx(2)分别代表了第一个图形和第二个图形。
4、还可以使用不同的线型画不同的线:[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);hLine1.LineStyle = '--';hLine2.LineStyle = ':';可以看看第一条线和第二条线的区别。
5、当然两条线也可以用不同的方式进行绘制:x = 0:0.1:10;y1 = 200*exp(-0.05*x).*sin(x);y2 = 0.8*exp(-0.5*x).*sin(10*x);figure;plotyy(x,y1,x,y2,'plot','stem')第一条线是最普通的plot,第二条线是棒状图stem。
参考技术B1、axis equal
2、这个功能matlab无法直接实现,除非是用最新的R2015b版本。因此,有人写了一个自定义函数 shift_axis_to_origin( ) 实现将坐标轴移到原点的效果。
function shift_axis_to_origin( fig_handle )% 本函数目的是把 matlab 做的图坐标轴移到图形的中间部分去(与数学的做图习惯一致)
% 2008.10.10 in pku
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xL=xlim ;
yL=ylim ;
xt=get(gca,'xtick') ;
yt=get(gca,'ytick') ;
set(gca,'XTick',[],'XColor','w') ;
set(gca,'YTick',[],'YColor','w') ;
% 把 x 和 y 坐标轴的两个方向各延长 10% (为了视觉上好看)
extend_x = ( xL(2)-xL(1) ) * 0.1 ;
extend_y = ( yL(2)-yL(1) ) * 0.1 ;
xxL = xL + [ -extend_x extend_x] ;
yyL = yL + [ -extend_y extend_y] ;
set(gca,'xlim', xxL) ;
set(gca,'ylim', yyL) ;
pos = get(gca,'Position') ;
% box off;
x_shift = abs( yyL(1)/(yyL(2)-yyL(1)) ) ;
y_shift = abs( xxL(1)/(xxL(2)-xxL(1)) ) ;
temp_1 = axes( 'Position', pos + [ 0 , pos(4) * x_shift , 0 , - pos(4)* x_shift*0.99999 ] ) ;
xlim(xxL) ;
% box off ;
set(temp_1,'XTick',xt,'Color','None','YTick',[]) ;
set(temp_1,'YColor','w') ;
temp_2 = axes( 'Position', pos + [ pos(3) * y_shift , 0 , -pos(3)* y_shift*0.99999 , 0 ] ) ;
ylim(yyL) ;
% box off ;
set(temp_2,'YTick',yt,'Color','None','XTick',[]) ;
set(temp_2,'XColor','w') ;
Base_pos = get(fig_handle,'Position') ;
arrow_pos_in_x_dircetion = Base_pos(2) - Base_pos(4) * yyL(1)/(yyL(2)-yyL(1)) ;
arrow_pos_in_y_dircetion = Base_pos(1) - Base_pos(3) * xxL(1)/(xxL(2)-xxL(1)) ;
annotation('arrow',[Base_pos(1) , Base_pos(1)+Base_pos(3)] , [arrow_pos_in_x_dircetion , arrow_pos_in_x_dircetion ] , 'Color','k');
annotation('arrow',[arrow_pos_in_y_dircetion , arrow_pos_in_y_dircetion ] , [Base_pos(2) , Base_pos(2)+Base_pos(4)] , 'Color','k');
end
将上面的函数保存在工作目录下,通过以下代码基本可以实现你的需求
% 原来的代码F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4);
% 离散数据点
x=load('C:\\Users\\kkk\\Desktop\\Total.txt');
p0=[1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p=nlinfit(x,zeros(size(x,1),1),F,p0);
plot(x(:,1),x(:,2),'ro');
hold on;
xmin=min(x(:,1));
xmax=max(x(:,1));
ymin=min(x(:,2));
ymax=max(x(:,2));
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]);
title('曲线拟合');
legend('样本点','拟合曲线')
% 新增代码
xlabel('')
ylabel('')
shift_axis_to_origin( gca ) ;
axis equal
最终效果
本回答被提问者采纳matlab plot 函数怎样把X轴和Y轴调转 让图像"立"起来
我想让这个图像竖着显示 该怎么弄
如果有现成的数据,最简单的就是直接plot(y,x);
如果已经绘图,再提取数据嫌麻烦,可以用:
view(90,90)set(gca,'xdir','reverse') 参考技术A plot(y,x)就好了啊
以上是关于Matlab中用plot画图,x轴和y轴比例不一致的主要内容,如果未能解决你的问题,请参考以下文章
matlab plot 函数怎样把X轴和Y轴调转 让图像"立"起来