我试图使用ggplot2在地图内绘制子图。有一个问题需要处理 这个问题已经存在,但我相信这个差异就是子图没有了 与地图信息有很大关系。要完成这个问题,请运行代码直到 问题
library(ggplot2)
library(plyr)
library(reshape2)
con <- url("http://gadm.org/data/rda/ARG_adm2.RData")
print(load(con))
close(con)
ggmap <- fortify(gadm, region = "NAME_1")
theme_martin <-
theme(
axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.ticks.length=unit(0.3, "lines"),
axis.ticks.margin=unit(0.5, "lines"),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.background=element_rect(fill="white", colour=NA),
legend.key=element_rect(colour="white"),
legend.key.size=unit(1.2, "lines"),
legend.position= "bottom",
legend.text=element_text(size=rel(0.8)),
legend.title=element_text(size=rel(0.8), face="bold", hjust=0),
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.margin=unit(0, "lines"),
plot.background=element_blank(),
plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
plot.title=element_text(size=rel(1.2)),
strip.background=element_rect(fill="grey90", colour="grey50"),
strip.text.x=element_text(size=rel(0.8)),
strip.text.y=element_text(size=rel(0.8), angle=-90)
)
theme_martin_2 <-
theme(
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.background=element_rect(fill="white", colour=NA),
legend.key=element_rect(colour="white"),
legend.key.size=unit(1.2, "lines"),
legend.position="right",
legend.text=element_text(size=rel(0.8)),
legend.title=element_text(size=rel(0.8), face="bold", hjust=0),
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.margin=unit(0, "lines"),
plot.background=element_blank(),
plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
plot.title=element_text(size=rel(1.2)),
strip.background=element_rect(fill="grey90", colour="grey50"),
strip.text.x=element_text(size=rel(0.8)),
strip.text.y=element_text(size=rel(0.8), angle=-90)
)
p <- ggplot(data=ggmap, aes(x=long, y=lat))
p <- p + geom_polygon(data=ggmap, colour="white", fill = "#00BFC4", aes(group=group))
p <- p + coord_map(xlim=-c(77, 53), ylim=-c(56,20))
p <- p + theme_martin
p
df_wide <- data.frame(PROV = c("BUENOS AIRES", "TUCUMAN", "SANTA CRUZ"),
Var1 = c(15, 12, 8), Var2 = c(20, 10, 15), Var3 = c(5, 7, 8),
long = c(-32.971804, -28.459033, -43.452919),
lat = c(-54.056168,-64.714966,-67.175903))
df_long <- melt(df_wide[,1:4])
df_long <- join(df_long, df_wide, type = "inner")
df_long <- df_long[,c(1:3, 7:8)]
df_1 <- subset(df_long, PROV == "BUENOS AIRES")
df_2 <- subset(df_long, PROV == "TUCUMAN")
df_3 <- subset(df_long, PROV == "SANTA CRUZ")
col_bar <- c("#00BA38", "#00BFC4", "#D7BA00")
如何使用ggplot或基本图形(如下图(sub_plot_i))向此图添加条形图?
我想在每个数据框中表示的地理坐标处添加它们:
例如:
位于df_1[1,4:5]
的BUENOS AIRES条形图
位于df_2[1,4:5]
的TUCUMAN条形图
SANTA CRUZ条形图位于df_3[1,4:5]
sub_plot_1 <- ggplot(df_1, aes(x = factor(variable), y = value))
sub_plot_1 <- sub_plot_1 + geom_bar(data=df_1, stat = "identity", fill = col_bar)
sub_plot_1 <- sub_plot_1 + geom_text(aes(label=value), colour= col_bar, size = 7, vjust = -1)
sub_plot_1 <- sub_plot_1 + theme_martin_2
sub_plot_2 <- ggplot(df_2, aes(x = factor(variable), y = value))
sub_plot_2 <- sub_plot_2 + geom_bar(data=df_2, stat = "identity", fill = col_bar)
sub_plot_2 <- sub_plot_2 + geom_text(aes(label=value), colour= col_bar, size = 7, vjust = -1)
sub_plot_2 <- sub_plot_2 + theme_martin_2
sub_plot_3 <- ggplot(df_3, aes(x = factor(variable), y = value))
sub_plot_3 <- sub_plot_3 + geom_bar(data=df_2, stat = "identity", fill = col_bar)
sub_plot_3 <- sub_plot_3 + geom_text(aes(label=value), colour= col_bar, size = 7, vjust = -1)
sub_plot_3 <- sub_plot_3 + theme_martin_2
print(sub_plot_1)
print(sub_plot_2)
print(sub_plot_3)
我已经尝试过这个Plotting bar charts on map using ggplot2?问题中的建议,但他们似乎没有处理同样的问题 我试过ggsubplot()但它没有那么好用。 我也尝试将两个地块打印在一起,但也没有用。
我遇到的问题以及为什么我认为这个问题与链接问题不同 是条形图与地图信息无关。 这些是来自几乎所有外部信息的条形图,也是最重要的事情 地图和条形图是条形图的位置。