# Matlab Plotting Question: No graphs

1 view (last 30 days)
Meowooo on 8 Nov 2019  Hello Everyone, I am trying to plot the below equilibrium curve by using the plot shown. However, my code does not work.
Is there anything that I missed? Thank you for your help! :)

#### 1 Comment

Shubham Gupta on 8 Nov 2019
your x1 & y1 are scalars. which is being plotted as a point on the graph.
plot(x1,y1,'r*')
Above code will show "red asterisk" at that point. But I sure you want x1 & y1 to be vectors, which you won't get unless you use vectors to calculate x1 & y1.

Hiroki Okawa on 8 Nov 2019
Edited: Hiroki Okawa on 8 Nov 2019
Hi, Meowooo
T1 = 70:90; A1 = 13.8858; B1 = 2788.51; C1 = 220.79;
T2 = 120:140; A2 = 14.0045; B2 = 3279.47; C2 = 213.20;
P = 101.33;
P1sat = exp(A1 - B1 ./ (T1 + C1));
P2sat = exp(A2 - B2 ./ (T2 + C2));
x1 = ((P - P2sat)./(P1sat-P2sat)); % / => ./
y1 = (P1sat/P).*x1; % * => .*
plot(x1, y1);
grid on

Artemio Soto Breceda on 8 Nov 2019
Your problem is that x1 is a single value, rather than an array. It is actually plotting something, but it is just 1 single dot per element of y1. Try this and you will see what I mean:
plot(x1,y1,'o');
I believe that your problem would be fixed if you use the dot (.) operator to define x1:
x1 = ((P-P2sat)./(P1sat-P2sat)); % This makes x1 an array, instead of a single value
y1 = (P1sat/P).*x1; % Then you need to use the dot (.) operator on this line as well