# 3D-plots of 2D-grids

7 messages
Open this post in threaded view
|

## 3D-plots of 2D-grids

 Hello everybody, I have an Ascii-grid (100x100m) with population density over Switzerland (local coordinations system, CH LV03). Now I would like to have a nice graphic to present the data. I would like to make a plot that will show the density as the z-variable and raise for example a stacking pillar showing how high the density is in that hectare. I attached a map that's  similar to what I would like, to give you an idea incase I am not making myself clear. Can you tell me how I can do this? I tried persp and persp3d, but there the x and y-vectors have to be increasing values, where as the coordinates in a grid don't necessarily increase for both x and y, as they follow the line horizontally... Your help would be greatly appreciated :), Thank you jacqueline
Open this post in threaded view
|

## Re: 3D-plots of 2D-grids

 On Feb 14, 2013, at 1:10 AM, jas wrote: > > Hello everybody, > > I have an Ascii-grid (100x100m) with population density over   > Switzerland > (local coordinations system, CH LV03). Now I would like to have a nice > graphic to present the data. I would like to make a plot that will   > show the > density as the z-variable and raise for example a stacking pillar   > showing > how high the density is in that hectare. I attached a map that's   > similar to > what I would like, to give you an idea incase I am not making myself   > clear. > > > > Can you tell me how I can do this? I tried persp and persp3d, but   > there the > x and y-vectors have to be increasing values, where as the   > coordinates in a > grid don't necessarily increase for both x and y, as they follow the   > line > horizontally... > I thought you said you had a 'grid'  presumably with values at the   intersections of the grid? That is the sort of input that persp will   take. You would supply x=seq( ..., length=100), y= seq( ... ,   length=100) and your 'grid' (which I assume is stored as a matrix) as   z values. In fact if you just supply a matrix as the z value to persp   you will get an automatic display, just not with the labels you might   have hoped for. -- David Winsemius, MD Alameda, CA, USA ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: 3D-plots of 2D-grids

 In reply to this post by jas calc_ext3.ascI supplied a small extent of the grid, that I am trying to visualize. It s a ascii-grid with 800 cells. My goal is to display the Grid-Values as the z-variable. The point that I dont understand, is what is my input as x and y-Variable in the persp-function? Do I have to make 8 vectors with 100 entries and plot them individually? Your help is greatly appreciated, jas pop.grid pop.mat <- as.matrix(pop.grid) # order is not right here already z <- pop.mat x <- 1:nrow(z) y <- 1:nrow(z) persp(x,y,z, phi=30,  border=NA) # Error n persp.default(x, y, z, phi = 30, border = NA) :   invalid 'z' Argument
Open this post in threaded view
|

## Re: 3D-plots of 2D-grids

 On Feb 14, 2013, at 8:05 AM, jas wrote: > calc_ext3.asc > > > > I supplied a small extent of the grid, that I am trying to   > visualize. It s a > ascii-grid with 800 cells. My goal is to display the Grid-Values as   > the > z-variable. The point that I dont understand, is what is my input as   > x and > y-Variable in the persp-function? Do I have to make 8 vectors with 100 > entries and plot them individually? > > Your help is greatly appreciated, > > jas > > pop.grid > pop.mat <- as.matrix(pop.grid) # order is not right here already > > z <- pop.mat > x <- 1:nrow(z) > y <- 1:nrow(z) > persp(x,y,z, phi=30,  border=NA) > # Error n persp.default(x, y, z, phi = 30, border = NA) : >  invalid 'z' Argument I copied the space separated data from that webpage into my clipboard   and executed this: grd <- matrix( scan(), ncol=40, nrow=20) # and pasted my clipboard is.na(grd[] ) <- grd == -9999  # use a proper R missing value   str(grd) # num [1:20, 1:40] NA NA NA NA NA ...   persp(z=grd)   image(grd) Alternatively you could have used read.table from that file with skip =6 The image looks rather disjointed and I'm hoping that lack of   continuity is an artifact of extracting only a portion of the data. -- David. > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/3D-plots-of-2D-grids-tp4658517p4658564.html> Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > [hidden email] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code. David Winsemius, MD Alameda, CA, USA ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: 3D-plots of 2D-grids

 Hello David, thanks again for your reply. Two things remain unclear. That the data is disjointed is ok, as there are only values in hectares, where there are actually buildings and stuff, forest/nature is NA. The presp-scan that I get from persp(grd) has no similarity to the image in 2d. My guess is that the order and regularity in the data somehow gets lost in the process of making the matrix?! The grid-extraction that I uploaded contains 40x20 cells. if its a bigger grid with 7million cells, does it still work the same way or can the vectors only be a maximum of 100 cells?   Thank you for your help jas