Making a contour plot from x and y data

16 ビュー (過去 30 日間)
Markus Similä
Markus Similä 2020 年 7 月 21 日
コメント済み: Markus Similä 2020 年 7 月 23 日
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 件のコメント
KSSV
KSSV 2020 年 7 月 22 日
Share your data.
Markus Similä
Markus Similä 2020 年 7 月 22 日
The data looks something like this. There are a lot more data points (millions).
Oops, I missed a zero on the range of the x.
35847 1.547
6062 2.172
115733 2.282
33021 1.760
35769 1.772
35872 2.030
55739 2.298
55266 0.693
55348 0.693
1409 1.605
1685 2.059
33735 1.615
50968 2.043
60111 1.637
74971 2.217
55397 1.431
1810 1.321
54242 2.581
35771 0.944
2118 1.782
34322 2.127
1943 1.743
1758 1.721
168417 0.583
129397 1.737
76477 1.624
91810 1.150
76881 1.669
223104 1.834
4048 2.066
5170 1.524

サインインしてコメントする。

採用された回答

Adam Danz
Adam Danz 2020 年 7 月 22 日
編集済み: Adam Danz 2020 年 7 月 22 日
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')
  1 件のコメント
Markus Similä
Markus Similä 2020 年 7 月 23 日
Thank you!
This is what I was trying to do as well.

サインインしてコメントする。

その他の回答 (1 件)

KSSV
KSSV 2020 年 7 月 22 日
I would follow like below:
  1. You need to generate z values which are density values.
  2. I would fix a distance r and calculate the number of points within r for each point using rangesearch.
  3. Now you can use scatter to plot the density values.
  4. If your data is structured arrange the data and use contourf.

カテゴリ

Help Center および File ExchangeContour Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by