我有一个代码,我需要在其中绘制两个函数,其中x轴由非常小的数字组成(平均值为10 ^ -6)。 这是代码:
Na = 10^18;
Nd = 10^15;
X_n = 9.941913007683443e-05;
X_p = 9.931981026656786e-08;
eps_0 = 8.85*10^-14;
eps_r = 11.8;
q = 1.6*10^-19;
x1 = -X_p:0.000000001:0;
x2 = 0:0.00000001:X_n;
v1 = (q*Na/eps_0*eps_r).*(x1.^2/2+X_p.*x1)+(X_p^2*q*Na)/(2*eps_0*eps_r);
v2 = (-q*Nd/eps_0*eps_r).*(x2.^2/2-X_n.*x2)+(X_p^2*q*Na)/(2*eps_0*eps_r);
figure (2)
plot(x1,v1,'r');
figure (1)
plot(x2,v2);
% plot(x1,v1,'r');
% hold on;
% plot(x2,v2);
在这里,两个图表是分开的,因此您可以看到它们有多么不同。我想在一个图中绘制这两个函数。正如您所看到的,我尝试使用hold on命令,但由于每个功能的不同程度,它无法正常工作。我也尝试使用轴相等,轴自动等命令,它也没有用。
我该怎么办?
谢谢。
答案 0 :(得分:0)
您是否考虑过使用subplot
?
如果您必须使用x1
和x2
,我不相信您可以在同一图中同时显示两个图表。但你可以尝试:
subplot(2,1,1)
plot(x1,v1,'r');
title('title one')
xlabel('some values')
ylabel('some other values')
lg = legend('This curve represents...')
subplot(2,1,2)
plot(x2,v2,'b');
title('title two')
xlabel('some values')
ylabel('some other values')
lg2 = legend('This curve represents...')
修改强>
试试这个!我给你一个你可以修改的例子。
x1 = 0:0.1:40;
y1 = 4.*cos(x1)./(x1+2);
x2 = 1:0.2:20;
y2 = x2.^2./x2.^3;
你有两个x值和两个不同的y值,然后使用line
:
line(x1,y1,'Color','r') % The first plot!
haxes1 = gca; % handle to axes
set(haxes1,'XColor','r','YColor','r') % sets the first x,y_axis of different color, this time will be red, but you can change this if you want
然后:
haxes1_pos = get(haxes1,'Position'); % store position of first axes
haxes2 = axes('Position',haxes1_pos,...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none');
完全按照您的意愿使用代码。如果需要,可以跳过'YAxisLocation','right',...
,试试代码并告诉我它是如何运作的。
答案 1 :(得分:0)
尝试缩放其中一个或两个,直到它们之间的差异不那么显着。否则,较小的将永远(并且在视觉上)为零。