What is the best way to create pcolor plot in the case when 1d-arrays given?

8 views (last 30 days)
Hello community. Could you provide an example for pcolor plot, if my dataset is described like this:
x=getSomeX(); % returns 1-by-n vector, in general just random doubles without any sequence
y=getSomeY(x); % returns 1-by-n vector
z=getSomeZ(x); % returns 1-by-n vector
where n is constant length, and i want to do something like this
pcolor(x,y,z);
but for me the problem is to make a correct n-by-n matrix z.
Thanks!

Accepted Answer

Walter Roberson
Walter Roberson on 4 Mar 2020
You cannot directly create pcolor plots in that situation. Instead see griddedInterpolant() https://www.mathworks.com/help/matlab/ref/griddedinterpolant.html or scatteredInterpolant() . Once you have the interpolated data, you can pcolor() that.
  3 Comments
Attskij Sotona
Attskij Sotona on 7 Mar 2020
scatteredInterpolant is OK, found an example here
https://blogs.mathworks.com/graphics/2016/02/24/on-the-grid/
npts = 250;
rng default
x = 2*randn(npts,1);
y = 2*randn(npts,1);
v = sin(x) .* sin(y);
figure; scatter(x,y,36,v,'filled')
colorbar
xlim([-2*pi 2*pi])
ylim([-2*pi 2*pi])
[xg,yg] = meshgrid(linspace(-2*pi,2*pi,125));
F = scatteredInterpolant(x,y,v);
vg = F(xg,yg);
figure; pcolor(xg,yg,vg);
shading flat;
Thanks!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!