How do we plot a graph with non available values for y without breaking the continuity?
    7 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Emerson De Souza
      
 am 25 Okt. 2012
  
    
    
    
    
    Kommentiert: Grant
 am 11 Apr. 2017
            INTRO: I have an array M as below:
M=
  1  4
  2  NaN
  3  10
  4  NaN
  5  NaN
  6  15
  7  NaN
  8  17
  9  59
  10  NaN
GOAL: I want to plot the second versus the first column as follow:
M=load('M.txt');
h=plot(M(:,1),M(:,2));
PROBLEM: Due to the NaN, it does not plot the gaps correctly and breaks the continuity of the graph.
I wonder if someone could suggest me to some command lines that could fix this issue.
I thank you in advance for your help
Emerson
0 Kommentare
Akzeptierte Antwort
  Matt Tearle
    
 am 25 Okt. 2012
        You can interpolate to fill the missing values, as Azzi suggests, or simply remove all the NaNs:
idx = ~isnan(M(:,2));
x = M(idx,1);
y = M(idx,2);
plot(x,y,'o-')
If you don't plot markers on the data points, this will look exactly the same as Azzi's solution using interpolation. The difference is whether or not you care about showing which points are actual data values.
1 Kommentar
  Grant
 am 11 Apr. 2017
				My problem is that I do care about what is a real value. I want to do what is easy in Excel - have a marker at each real value in my lineplot and have the lines interpolate between points
Weitere Antworten (1)
  Azzi Abdelmalek
      
      
 am 25 Okt. 2012
        
      Bearbeitet: Azzi Abdelmalek
      
      
 am 25 Okt. 2012
  
      Use interpolation
x=M(:,1);
y=M(:,2);
idx=find(~isnan(y))
y=interp1(x(idx),y(idx),x,'linear')
or remove rows containing nan
 x=M(:,1);
y=M(:,2);
x(find(isnan(y)))=[]
y(find(isnan(y)))=[]
2 Kommentare
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



