How to make real and imaginary plot of the graph same color

5 次查看(过去 30 天)
In my code I have a for loop and with every iteration i tell matlab to draw real part of the curve as a solid line and imaginary part of the curve as a dashed line. What I would like to have is for each iteration the real and imaginary part of the same curve to have the same color, could anyone help?
clear all
%%
v=0:1e+9:1e+12; %Frequency (Hertz)
t0=0; %Minimum Temperature (Celsius)
tstep=20; %Temperature Step
tmax=100; %Maximum Temperature
%%
for t=t0:tstep:tmax
t=t';
tc=133.1383;
a=[79.23882 3.815866 1.634967];
b=[0.004300598 0.01117295 0.006841548];
c=[1.382264e-13 3.510354e-16 6.30035e-15];
d=[652.7648 1249.533 405.5169];
delta=a.*exp(-b.*t);
tau=c.*exp(d./(t+tc));
es=87.9144 - 0.404399.*t + 9.58726*10^(-4).*t.^2 -1.32802*10^(-6).*t.^3;
p0=0.8379692;
p1=-0.006118594;
p2=-0.000012936798;
p3=4235901000000;
p4=-14260880000;
p5=273815700;
p6=-1246943;
p7=9.618642e-14;
p8=1.795786e-16;
p9=-9.310017e-18;
p10=1.655473e-19;
p11=0.6165532;
p12=0.007238532;
p13=-0.00009523366;
p14=15983170000000;
p15=-74413570000;
p16=497448000;
p17=2.882476e-14;
p18=-3.142118e-16;
p19=3.528051e-18;
delta4=p0+p1.*t+p2.*t.^2;
delta5=p11+p12.*t+p13.*t.^2;
tau4=p7+p8.*t+p9.*t.^2+p10.*t.^3;
tau5=p17+p18.*t+p19.*t.^2;
func4=p3+p4.*t+p5.*t.^2+p6.*t.^3;
func5=p14+p15.*t+p16.*t.^2;
e_real=es-(2*pi.*v).^2.*(...
tau(1).^2*delta(1)./(1+(2*pi.*v.*tau(1)).^2)+...
tau(2).^2*delta(2)./(1+(2*pi.*v.*tau(2)).^2)+...
tau(3).^2*delta(3)./(1+(2*pi.*v.*tau(3)).^2))...
-(2*pi.*tau4).^2.*0.5.*delta4.*(...
v.*(func4+v)./(1+(2*pi.*tau4.*(func4+v)).^2)-...
v.*(func4-v)./(1+(2*pi.*tau4.*(func4-v)).^2))...
-(2*pi.*tau5).^2.*0.5.*delta5.*(...
v.*(func5+v)./(1+(2*pi.*tau5.*(func5+v)).^2)-...
v.*(func5-v)./(1+(2*pi.*tau5.*(func5-v)).^2));
e_imag=2.*pi.*v.*(...
tau(1).*delta(1)./(1+(2.*pi.*v.*tau(1)).^2)+...
tau(2).*delta(2)./(1+(2*pi.*v.*tau(2)).^2)+...
tau(3).*delta(3)./(1+(2*pi.*v.*tau(3)).^2))+...
pi.*v.*tau4.*delta4.*(...
1./(1+(2*pi.*tau4.*(func4+v)).^2)+...
1./(1+(2*pi.*tau4.*(func4-v)).^2))+...
pi.*v.*tau5.*delta5.*(...
1./(1+(2*pi.*tau5.*(func5+v)).^2)+...
1./(1+(2*pi.*tau5.*(func5-v)).^2));
e=e_real+1j.*e_imag;
semilogx(imag(e),'--')
set(gca,'FontSize',20);
set(gca,'Color','k');
title('Relative Permittivity of Water vs Frequency & Water Temperature', 'Fontsize', 40);
xlabel('Frequency (Hz)','Fontsize', 40) ;
ylabel('Relative Permittivity', 'Fontsize', 40) ;
hold on
semilogx(real(e))
end

采纳的回答

Giuseppe Inghilterra
Hi,
a fast and easy solution could be generate a triplette of RGB values randomly at each iteration and you use it as color for both plots, as you can see in the following code:
RGB = rand(3,1);
semilogx(imag(e),'--','Color',RGB)
set(gca,'FontSize',20);
set(gca,'Color','k');
title('Relative Permittivity of Water vs Frequency & Water Temperature', 'Fontsize', 40);
xlabel('Frequency (Hz)','Fontsize', 40) ;
ylabel('Relative Permittivity', 'Fontsize', 40) ;
hold on
semilogx(real(e),'Color',RGB)
I have defined RGB vector that I use as color property for both plots. In this way both plots have the same color.
An alternative you could define a matrix of RGB values in order to control which color you want at each iteration for both plots.
Hope this helps.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

标签

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by