Making a contour plot from x and y data
13 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Markus Similä
il 21 Lug 2020
Commentato: Markus Similä
il 23 Lug 2020
I have a two column vector containing x and y values. The y values have a high accuracy (many decimal points).
x ranges from 0 to 50000 and y from 0 to 14.
I need to use contourf to make a 2d representation of this data.
How can this be done?
6 Commenti
Risposta accettata
Adam Danz
il 22 Lug 2020
Modificato: Adam Danz
il 22 Lug 2020
The bivariate density can be computed using histcounts2. You'll need to specify either the number of bins or the bin edges for the x and y variables using one of the syntaxes below.
Here's what the solution will look like. xy is your nx2 matrix of [x,y] values.
[N,Xedges,Yedges] = histcounts2(xy(:,1), xy(:,2), 5);
% or use [N,Xedges,Yedges] = histcounts2(X,Y,Xedges,Yedges);
% Compute bin centers
Xcnt = Xedges(2:end) - abs(diff(Xedges(1:2))/2);
Ycnt = Yedges(2:end) - abs(diff(Yedges(1:2))/2);
figure()
contour(Xcnt,Ycnt, N)
% show bins
xlim = [min(Xedges),max(Xedges)];
ylim = [min(Yedges),max(Yedges)];
arrayfun(@(x)xline(x,'Color',[.8 .8 .8]),Xedges)
arrayfun(@(y)yline(y,'Color',[.8 .8 .8]),Yedges)
% colorbar
cb = colorbar();
ylabel(cb,'density')
Più risposte (1)
KSSV
il 22 Lug 2020
I would follow like below:
- You need to generate z values which are density values.
- I would fix a distance r and calculate the number of points within r for each point using rangesearch.
- Now you can use scatter to plot the density values.
- If your data is structured arrange the data and use contourf.
0 Commenti
Vedere anche
Categorie
Scopri di più su Contour Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!