R 中的 ggplot 地图 - 标题在边框内,更多 space 在边框内

ggplot map in R - title inside border and more space within border

我编写了一些代码来制作美国各州和领地的地图。对于某些地区,我需要在标题外绘制边框,为地图提供更多 space。请参阅下面为夏威夷提取的块,灰色边框是我现在拥有的那个,但我需要类似于我在绘画中编辑的红色边框的东西(是的,我知道使用绘画非常糟糕)。关于如何解决这个问题的任何建议?我尝试使用 panel.border 移动边框但没有成功。最重要的任务是添加边框,为绘图提供更多 space。

library("choroplethrMaps")

# **************************
# Shapefiles for Hawai
# **************************
data(state.map)

# Subset for Hawaii
map.HI.dat <- subset(map.dat, State=="HI" )
dim(map.HI.dat) #[1] 3  95
map.HI.freq <- data.frame(table(map.HI.dat$state.name))
colnames(map.HI.freq) <- c("region", "n")
class(map.HI.freq$region) #[1] "factor"
map.HI.freq$region <- as.character(map.HI.freq$region)
map.HI.freq$region[map.HI.freq$region=="hawai"] <- "hawaii"
#View(map.HI.freq)
hawaii.st <- subset(state.map, region=="hawaii")

map.HI.freq <- data.frame(region="hawaii",
                          n=4)

hawaii.map.dat <- plyr::join(hawaii.st, map.HI.freq, by="region")
hawaii.map.dat$brks <- cut(hawaii.map.dat$n,
                           breaks = c(0, 0.99, 5,10,50,max.breaks),
                           labels = c("0", "1 - 5", "6 - 50", "51 - 150", paste("151 - ",max.breaks,sep="")),
                           include.lowest = TRUE)

s2 <-ggplot() + 
  geom_polygon(data=hawaii.map.dat, aes(x=long, y=lat, group = group, fill=brks), colour="black", size=1, show.legend = FALSE) +
  scale_fill_manual(name="",
                    values = colors.for.maps, 
                    breaks = breaks.for.maps, 
                    drop = FALSE) +
  theme(panel.grid       = element_blank(),
        panel.border     = element_rect(colour = "grey50", size = 2, fill=NA),
        panel.background = element_blank(),
        plot.title       = element_text(colour="black", size = 14, face = "bold", hjust=0.5)) + 
  labs(fill  = "Frequencies",
       title = "Hawaii", x="", y="") + 
  scale_y_continuous(breaks=c()) + 
  scale_x_continuous(breaks=c()) + 
  coord_map() 
s2

您可以将 plot.background 设置为矩形,然后删除 panel.border:

library("choroplethrMaps")

# **************************
# Shapefiles for Hawai
# **************************
data(state.map)

# Subset for Hawaii
hawaii.st <- subset(state.map, region=="hawaii")

ggplot(hawaii.st) +
    geom_polygon(aes(long, lat, group = group)) +
    theme(panel.grid       = element_blank(),
          panel.background = element_blank(),
          plot.background = element_rect(fill = "white", color = "grey20",size = 2),
          plot.title       = element_text(colour="black", size = 14, face = "bold", hjust=0.5)) + 
    labs(title = "Hawaii", x="", y="") + 
    scale_y_continuous(breaks=c()) + 
    scale_x_continuous(breaks=c()) + 
    coord_map()