Я недавно пытался опубликовать аналогичный вопрос, используя rworldmap
, но мне посоветовали попробовать вместо него ggmap
из-за простоты использования в сочетании с ggplot
.
Мой вопрос два, и мои знания о R достаточно разумны c, поэтому, пожалуйста, потерпите меня.
Я бы хотел наложить на карту p ie диаграмм, которые я создаю в ggplot. Не обязательно должно быть взаимодействие между ними, пока я могу получить изображение моего p ie поверх графиков карты.
У меня есть p ie диаграмм, созданных с использованием кода:
AD_Pie <-
ggplot(Tally_AD_Sorted, aes(x = "", y = n1, fill = Haplogroup)) +
geom_bar(stat = "identity", width = 1, size = 1) +
coord_polar("y", start = 0, direction = -1)+
scale_fill_manual(values = c("R1b" = "#7100b0", "R1a" = "#ff9c2c", "E1b" = "#bc67ff", "N1a" = "#94a800", "R1" = "#b1008a", "I2a" = "#d23645", "J2a" = "#fd2e00", "I1" = "#009cf8", "Other" = "#4f574e")) +
theme_void() +
guides(fill = guide_legend(ncol = 1)) +
theme(axis.line = element_blank(), axis.ticks = element_blank(), plot.title = element_text(hjust = 0.5))+
labs(title = "Haplogroup Proportion, >1AD") +
ggsave("AD_pie2.png", dpi = 1000)
Это дает мне диаграмму ap ie с легендой, но в какой-то момент я буду удалять легенду.
Я также создал карту и нанес координаты в виде точек на этой карте, используя код:
map <- get_stamenmap(c(left = -24.6, bottom = 20.5, right = 179.0, top = 77.8), size = c(640,640), zoom = 5, maptype = "terrain-background", color = "bw", force = TRUE)
png(file = "AD_Map.png", width = 10, height = 8, units = 'in', res = 800)
ggmap(map) +
geom_point(data = Coordinate_AD_Clean2, mapping = aes(x = long, y = lat, fill = Haplogroup, shape = Haplogroup),
size = 2,
stroke = 0) +
guides(fill = guide_legend(ncol = 2)) +
scale_fill_manual(breaks = c("R1b",
"R1a",
"E1b",
"N1a",
"R1",
"I2a",
"J2a",
"I1",
"C",
"C2",
"G",
"G2a",
"HIJK",
"I",
"I1a",
"I2b",
"IJK",
"J",
"J1",
"L",
"O",
"P~",
"Q1a",
"R"),
values = c("#7100b0",
"#ff9c2c",
"#bc67ff",
"#94a800",
"#b1008a",
"#d23645",
"#fd2e00",
"#009cf8",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e",
"#4f574e")) +
scale_shape_manual(breaks = c("R1b",
"R1a",
"E1b",
"N1a",
"R1",
"I2a",
"J2a",
"I1",
"C",
"C2",
"G",
"G2a",
"HIJK",
"I",
"I1a",
"I2b",
"IJK",
"J",
"J1",
"L",
"O",
"P~",
"Q1a",
"R"),
values = c(24,
24,
24,
24,
24,
24,
24,
24,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21,
21))
dev.off()
Мой вопрос заключается в том, можно ли построить диаграмму p ie Я создал в ggplot
на карте, которую я создал в ggmap
. По этому вопросу было несколько похожих вопросов, но мне еще не удалось найти однозначного или простого ответа, поэтому я надеюсь, что, возможно, мне поможет более индивидуальный ответ. Мне нужно только нанести график p ie один раз, в разумных размерах, на одну карту в определенной позиции.
Мой второй вопрос - скорее вопрос кода. В моем коде карты я должен вручную указать список цветов и форм для каждого значения. Есть ли способ сделать этот код проще?
Спасибо за ваше время, помощь очень ценится!