2011-12-13 37 views
5

Tôi đang cố gắng sử dụng faceting để tạo nhiều bản đồ chứa đầy các giá trị khác nhau.Cách sử dụng faceting với geom_polygon để tạo ra một mạng lưới bản đồ

Tôi đã tạo ví dụ đơn giản dưới đây để tái tạo cả những gì tôi đang cố gắng làm và kết quả mà tôi không mong đợi từ ggplot. Tôi sử dụng bản đồ của Hoa Kỳ và tạo ra hai cộng đồng giả định cho các bang. Tôi có thể vẽ từng cộng đồng một cách riêng biệt, nhưng khi tôi cố gắng khía cạnh và tạo ra chúng cùng một lúc, tôi chỉ nhận được một bản đồ.

require(ggplot2) 
require(maps) 

map <- map_data("state") 
states <- unique(map$region) 

# generate some hypothetical communities  
runA <- data.frame(region=states, id="A", 
        community=rbinom(length(states),1,.5)) 
runB <- data.frame(region=states, id="B", 
        community=rbinom(length(states),1,.5)) 

membership <- rbind(runA, runB) 

# plot an individual map of communities from run A 
df <- merge(map, runA, by="region") 
ggplot(df) + 
    aes(long, lat, group=group) + 
    coord_equal() + 
    geom_polygon(aes(fill = as.factor(community))) 

# likewise for B 
df <- merge(map, runB, by="region") 
ggplot(df) + 
    aes(long, lat, group=group) + 
    coord_equal() + 
    geom_polygon(aes(fill = as.factor(community))) 

# now instead do one plot with two maps from facetting on id 
df <- merge(map, membership, by="region") 
ggplot(df) + 
    aes(long, lat, group=group, facets= id ~.) + 
    coord_equal() + 
    geom_polygon(aes(fill = as.factor(community))) 

Lý tưởng nhất là bản đồ cuối cùng phải có hai bản đồ, một hiển thị cộng đồng trong "A" và một thể hiện cộng đồng bằng "B". Thay vào đó, cốt truyện chỉ hiển thị một bản đồ và tôi thậm chí không chắc chắn những gì đang được ánh xạ tới điền.

Trả lời

8

Bạn chỉ định các khía cạnh sai. Làm điều đó như thế này thay vào đó và nó sẽ hoạt động tốt:

ggplot(df) + 
    aes(long, lat, group=group) + 
    coord_equal() + 
    geom_polygon(aes(fill = as.factor(community))) + 
    facet_grid(facets= id ~.) 

enter image description here

+0

Cảm ơn! Tại sao có thể chỉ định tính thẩm mỹ 'facets' trong' aes() '? –

+0

Tôi nghĩ rằng nó hoạt động như vậy bởi vì hệ thống faceting, chính nó, không thực sự là một thẩm mỹ, nhưng một thành phần cốt truyện riêng biệt như quy mô và phối hợp. Vì vậy, nó có thể là 'facet_grid',' facet_wrap', hoặc tiềm năng những người khác trong tương lai, và điều này không thể được xác định đầy đủ chỉ với một bản đồ thẩm mỹ tiêu chuẩn. –

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