Tôi gặp sự cố tương tự như @Mike trong this question. Câu hỏi là làm thế nào để thiết lập các màu sắc phác thảo của các khu vực trong một lô bản đồ.đường viền geom_map trong ggplot2 - xem lại
Giải pháp được đề xuất là thêm geom_polygon
để vẽ qua biên giới. Điều này hoạt động, miễn là toàn bộ khu vực được vẽ. Khi cố gắng để hạn chế đến một tiểu khu vực, các đa giác được rút ra kỳ lạ (có lẽ vì một số đỉnh được giảm xuống). Sử dụng các tiêu chuẩn geom_map
dụ:
# Create example data
ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))
values <- data.frame(id = ids, value = c(3, 3.1, 3.1, 3.2, 3.15, 3.5))
positions <- data.frame(
id = rep(ids, each = 4),
x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3, 0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5, 2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
)
# Plot data
ggplot(values, aes(fill = value)) +
geom_map(aes(map_id = id), map = positions) +
geom_polygon(aes(x,y,group=id), fill = NA, colour = 'red', data = positions) +
expand_limits(positions) +
ylim(0, 3)
Sự chỉnh sửa có đang sử dụng các thẩm mỹ màu trong geom_map
và sau đó tự chọn màu phác thảo với scale_colour_manual
, như sau:
ggplot(values, aes(fill = value)) +
geom_map(aes(map_id = id, colour = 'white'), map = positions) +
scale_colour_manual(values=c('white')) +
expand_limits(positions) +
ylim(0, 3)
Vì vậy, tôi có hai câu hỏi:
- Tại sao
geom_polygon
không hoạt động bình thường khi giới hạn trục bị hạn chế? - Có một giải pháp thanh lịch hơn để tô màu các đường viền ngoài màu được phác thảo ở đây không?
Dưới đây là kết quả đầu ra của lô. Rất cám ơn trước.
điều này hoạt động đúng đắn, cảm ơn! Đây là một chi tiết, nhưng bạn có biết câu trả lời cho câu hỏi thứ hai của tôi không? Tại sao tôi không thể sử dụng 'color = white' aestetic trong hàm' geom_map' trực tiếp? – yellowcap
@yellowcap Tôi không biết, chủ yếu là vì tôi không chắc chắn vấn đề cụ thể của bạn là gì trong trường hợp thứ hai. – joran
@yellowcap Có lẽ đã quá muộn để điều này hữu ích, nhưng bạn muốn 'color =" white "' trong cuộc gọi 'geom_map' nhưng không phải trong cuộc gọi' aes'. Nó không phải là một thẩm mỹ bởi vì nó không phụ thuộc vào dữ liệu của bạn. Nó luôn luôn là màu trắng. – Gregor