why is my plot not showing anything
    14 views (last 30 days)
  
       Show older comments
    
    lowcalorie
 on 15 May 2012
  
    
    
    
    
    Commented: Walter Roberson
      
      
 on 1 Mar 2025
            clc
k = 8.9870e+009;
q1 = .000000024820;
q2 = .000005200901;
for r = [.10,.15,.20,.25,.30,.40];
    f = (k*q1*q2)/r.^2
end
plot(r,f)
hold on
axis([0 .5 0 .2])
i want to plot f vs r
4 Comments
  Christopher
 on 1 Mar 2025
				I am having a similar problem.
I have two defined vectors, and when I go to plot them, it shows me a window with a blank plot.
code (simplified because there is a lot of other code)
query=input("question")
mat1=(1:500);
mat2=linspace(0,query,500);
plot(mat2,mat1,"-",color='blue')
  Walter Roberson
      
      
 on 1 Mar 2025
				That code looks okay, provided that a finite value is entered for "query" and the finite value exceeds 500*eps(0)
Is it possible that you have a third-party plot.m or that you have assigned to a variable named plot ?
Accepted Answer
  Oleg Komarov
      
      
 on 15 May 2012
        You are overwriting f at every iteration and in the end you just have one point.
plot(r,f)
will plot thus one point. If you look carefully you'll find it.
Try this, the vectorized code:
k  = 8.9870e+009;
q1 = .000000024820;
q2 = .000005200901;
r  = [.10,.15,.20,.25,.30,.40];
f  = (k*q1*q2)./r.^2
plot(r,f)
hold on
axis([0 .5 0 .2])
0 Comments
More Answers (2)
  Thomas
      
 on 15 May 2012
        try
k = 8.9870e+009;
q1 = .000000024820;
q2 = .000005200901;
 r = [.10,.15,.20,.25,.30,.40];
for count=1:numel(r)
f(count) = (k*q1*q2)/r(count).^2  % save f as array
end
plot(r,f)
hold on
axis([0 .5 0 .2])
You were not saving f as array and hence were only plotting one f and one r pair..
You can avoid the loop totally as well using:
 f = (k*q1*q2)/r.^2;
  plot(r,f)
  rajdeep singh
 on 9 Feb 2020
        What is r is a function of random numbers? Like data points
1 Comment
  Walter Roberson
      
      
 on 9 Feb 2020
				Oleg's and Thomas's solutions do not care how you create r and do not care whether r is sorted.
The one thing to watch out for if r is not sorted is that because by default plot() connects points that are adjacent in data order, you would get a lot of lines back and forth across the screen. sorting on r prevents that problem.
for idx=1:10 
  r(idx) = rand() ;
  f(idx) = (k*q1*q2)/r(idx).^2;
end 
[sr, sidx] = sort(r) ;
sf = f(sidx);
   plot(sr, sf)
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





