2012-04-24 31 views
5

Tôi đang cố gắng lấy một shapefile và các điểm được chứa trong nó và kết thúc với một âm mưu của shapefile, các điểm và sau đó cuối cùng một phân tích quadrat chồng lên trên với một số lượng alpha minh bạch.Cách vẽ số ô tiêu chuẩn trên đỉnh của bản đồ trong ggplot2 theo kiểu bản đồ nhiệt như

tôi đã cố gắng và đã đưa ra ví dụ này rằng sẽ phục vụ:

library(ggplot2) 
library(maps) 
library(maptools) 
library(spatstat) 
library(plyr) 

# generate polygons 
usa <- map('usa', plot=F) 
IDs <- sapply(strsplit(usa$names, ':'), function(x) x[1]) 
crs <- CRS('+proj=longlat +ellps=WGS84') 
usa.sp <-map2SpatialPolygons(usa, IDs=usa$names, proj4string=crs) 
usa.pts <- fortify(usa.sp, region="id") 

base.plot <- ggplot(usa.pts, aes(x=long, y=lat)) + 
       geom_path(aes(group=id)) + 
       coord_equal() 

# generate point process 
lon <- runif(5000, min(usa.pts$long, na.rm=TRUE), max(usa.pts$long, na.rm=TRUE)) 
lat <- rnorm(5000, mean(usa.pts$lat, na.rm=TRUE), sd=sd(usa.pts$lat, na.rm=TRUE)/2) 
points <- data.frame(lon, lat) 
points.sp <- SpatialPoints(points, proj4string=crs) 
points <- points[which(!is.na(over(points.sp, usa.sp))),] 

# the first plot 
base.plot + 
    geom_point(data=points, aes(x=lon, y=lat), color="red", alpha=I(0.5)) 

Vì vậy, sau đó những gì shapefile và dữ liệu của tôi khoảng sẽ trông giống như là: enter image description here

Các bước tiếp theo tôi muốn mất là để thực hiện phân tích quadrat của các kích cỡ tế bào khác nhau và vẽ các kết quả trên cốt truyện với các điểm. Giả sử tôi thành công có được một đối tượng quadratcount (sắp xếp dữ liệu ngay bây giờ thành định dạng đúng), làm thế nào tôi sẽ đi về âm mưu nó như là một lớp phủ heatmap giống như?

+0

Có lẽ một câu hỏi liên quan là làm thế nào để lấy phần hình ảnh của lớp quadratcount, làm cho nó một shapefile trong đó mỗi tế bào là một đa giác với giá trị đếm thích hợp, và mưu đó như là một lớp geom_tile? –

Trả lời

4

Để thêm một Heatmap trong ggplot, bạn có thể sử dụng geom_tile, hoặc stat mặc định của nó, stat_bin2d:

library(mapproj) 
base.plot + 
    stat_bin2d(data=points, aes(x=lon, y=lat), bins=100) + 
    coord_map() 

Tôi cũng đề nghị bạn sử dụng coord_map hơn coord_equal, sau khi cài đặt gói mapproj để cho phép chiếu bản đồ khác nhau .

enter image description here

Các vấn đề liên quan