Plotting a surface from a timetable

I've developed a timetable (attached), and I want to make a surface plot from it. I want "Start Time" and "Distance [km]" to be my x and y axes, with "Flow Rate [veh/hr]" as the corresponding output on the z axis. I've tried using plot3, but I'm getting a jumbled mess instead of a smooth surface.

 Akzeptierte Antwort

Voss
Voss am 16 Feb. 2024

0 Stimmen

Here's one way:
load data
X = Lane1Data.("Start Time");
Y = Lane1Data.("Distance [km]");
Z = Lane1Data.("Flow Rate [veh/hr]");
I = scatteredInterpolant(hours(X-min(X)),Y,Z);
X_plot = linspace(min(X),max(X),50);
Y_plot = linspace(min(Y),max(Y),50);
[XX,YY] = meshgrid(hours(X_plot-min(X_plot)),Y_plot);
Z_plot = I(XX,YY);
surf(X_plot,Y_plot,Z_plot)

Weitere Antworten (1)

Fangjun Jiang
Fangjun Jiang am 16 Feb. 2024
Bearbeitet: Fangjun Jiang am 16 Feb. 2024

0 Stimmen

when you use plot() or plot3(), the plot connects the data points from the first to the second, till the last. Sometimes this causes bad visual effect.
What you need might be scatter3(), or use plot3(x,y,z,'.') which means just show the data points but not to connect the data points.

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2023b

Gefragt:

am 16 Feb. 2024

Kommentiert:

am 16 Feb. 2024

Community Treasure Hunt

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

Start Hunting!

Translated by