Surfc error in plotting
Show older comments
I am trying to use surfc to plot 3 variables-time, height, temp. I have imported these variables in from an excel worksheet and have converted them to arrays. When using surfc, I receive an error stating my Z values must have more than one row or column. This is what I have done so far:
temp=table2array(table(:,1)
height=table2array(table(:,2)
time=table2array(table(:,3)
[x,y]=meshgrid(time,height)
z=temp
surfc=(x,y,z)
Any help would be appreciated.
As a side note, I tried to use contour but found an error since my values are not purely in an ascending or descending order. Thanks!
Answers (1)
Walter Roberson
on 4 Jan 2018
Please do not use table as the name of a variable, especially when you are using table objects. Below I will use datatable()
temp = datatable{:,1};
height = datatable{:,2};
time = datatable{:,3};
heightvec = linspace(min(height), max(height));
timevec = linspace(min(time), max(time));
[x, y] = meshgrid(timevec, heightvec);
z = griddata(time, height, temp, x, y);
surf(x, y, z, 'edgecolor', 'none')
7 Comments
Wafa'a Shanti
on 4 Jan 2018
Walter Roberson
on 4 Jan 2018
You can use hold on there, but unless you set Alpha values, the later surfaces are going to hide the earlier surfaces unless they are at non-overlapping locations.
Wafa'a Shanti
on 4 Jan 2018
Walter Roberson
on 4 Jan 2018
That is what the current code should do. But could you check that your input has time as the third column and temperature as the first column? Normally those would be the other way around.
Wafa'a Shanti
on 5 Jan 2018
Walter Roberson
on 5 Jan 2018
Your code extracts time from the third column of your data file. Please check your data file to verify that the time is stored in column 3. It is possible, but it would be unusual: time is usually before the data being me.
Wafa'a Shanti
on 5 Jan 2018
Categories
Find more on Surface and Mesh Plots 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!