Matlab中用plot画图,x轴和y轴比例不一致

两个问题:1、Matlab中用plot画图时,x轴和y轴比例不一致,想把x轴和y轴比例调成一致,也就是让x轴和y轴上的同样0.5看起来距离也是一样的。2、想把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

在线等,急!
展开
 我来答
小周爱唠叨
高粉答主

2019-07-13 · 说的都是干货,快来关注
知道小有建树答主
回答量:966
采纳率:100%
帮助的人:31.3万
展开全部

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、得出

百度网友faadf46
高粉答主

2020-04-28 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:66.6万
展开全部

Matlab中用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。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
learneroner
高粉答主

推荐于2017-12-15 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6343万
展开全部

1、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

最终效果

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式