How to plot 2D density plot with very large files?

조회 수: 12 (최근 30일)
Vikash Raj
Vikash Raj 2023년 2월 19일
답변: Vikash Raj 2023년 2월 20일
Hi
I want to plot 2D density plots with a colourbar for very large files. I want my x ais to be longitude, y axis to be latitude and the z axis as absolute VTEC as colour bar. I was trying to run the codes given below but I getting a error. as
"Error using repmat
Requested 373471x373471 (1039.2GB) array exceeds maximum array size preference (15.9GB). This might cause MATLAB to become unresponsive.
Error in meshgrid (line 61)
xx = repmat(xrow,size(ycol));"
Any suggestions on how can I fix this so that I can obtain my dentsity contour plots ?
Im attaching my part of data. Is it possible for the graph to have blue colour as background colour as shown with the figure attached.
load('Data 1.mat')
whos
Name Size Bytes Class Attributes Absolute_VTEC 194004x1 1552032 double Latitude 194004x1 1552032 double Longitude 194004x1 1552032 double ans 1x35 70 char cmdout 1x33 66 char
xi =Longitude;
yi = Latitude;
[numel(xi), numel(uniquetol(xi))]
ans = 1×2
194004 111053
[numel(yi), numel(uniquetol(yi))]
ans = 1×2
194004 111143
[X,Y] = meshgrid(xi,yi);
Error using repmat
Requested 194004x194004 (280.4GB) array exceeds maximum array size preference (30.9GB). This might cause MATLAB to become unresponsive.

Error in meshgrid (line 61)
xx = repmat(xrow,size(ycol));
Z = Absolute_VTEC;
pcolor(X,Y,Z)
shading interp
colorbar
colormap(jet)
  댓글 수: 2
Walter Roberson
Walter Roberson 2023년 2월 19일
Do you possibly have scattered data instead of a grid of data?
dpb
dpb 2023년 2월 19일
373471.^2*8/1024.^2
ans = 1.0642e+06
MB -- you don't have enough memory; decimate X,Y until you can hold the resulting array in memory. With only roughly 10,000 pixels on a monitor in each direction, you can't discriminate more than that many discrete locations, anyway.

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2023년 2월 19일
편집: Walter Roberson 2023년 2월 19일
You do not have a grid of lat and long: you have scattered data. You can see from the ratio of the number of unique elements to the number of stored elements that it does not happen to be a grid of data that has been reshaped into a row.
A density plot reflects how dense points are, and takes as input vectors of x and vectors of y -- no third value. You cannot do a density plot of scattered data when you have three variables. You can do things like take means.
load('Data 1.mat')
scatter(Longitude, Latitude, 1, Absolute_VTEC)
mask = isfinite(Latitude) & isfinite(Longitude);
Latitude = Latitude(mask); Longitude = Longitude(mask);
N = 100;
[latbins, latedges] = discretize(Latitude, N);
[lonbins, lonedges] = discretize(Longitude, N+1);
denmat = accumarray([latbins(:), lonbins(:)], Absolute_VTEC(mask), [], @mean, NaN);
latmid = (latedges(1:end-1) + latedges(2:end))/2;
lonmid = (lonedges(1:end-1) + lonedges(2:end))/2;
h = pcolor(lonmid, latmid, denmat);
h.EdgeColor = 'none';
colorbar()
  댓글 수: 2
Vikash Raj
Vikash Raj 2023년 2월 20일
편집: Vikash Raj 2023년 2월 20일
Hi, Thank you the graph looks ok to me.
I just wish to know, doses this scatter plots represents the mean values of absolute_VTEC on the z axis.
Since we are using scatter plots how may I represents my data using geoscatter plots. ?
Walter Roberson
Walter Roberson 2023년 2월 20일
Yes. The code divides the range of lat and long values into intervals; the intervals applied in two different directions form a rectangular grid. The code figures out where on the grid that each value belongs, and for each grid point takes the mean of the vtec values that fall into that grid point. With this particular coding the grid locations with no elements are assigned nan, but that is easy to change.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Vikash Raj
Vikash Raj 2023년 2월 20일
Thank you. I did and it is working.
How can Specificaly show the VETC along specicfic longitudinaly as shown above. Can the scatter plot that we have used be used to obtain simillar to above graph. I was trying the geoscatter but couldnt get the graph.

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by