如何在不掩盖我的空间图的情况下显示图例?

时间:2016-05-18 17:14:56

标签: r plot legend

我遇到了设置传奇位置的问题,并想知道是否有人可以提供帮助。 我按照这个例子: http://www.thisisthegreenroom.com/2009/choropleths-in-r/ 我的代码是:

 require(maps)
    require(ggmap)
    library(openxlsx)
    rm(list = ls())
    map("state", "Arizona")
    setwd('M:/SCC/Q-Board')
    PM25 <- read.xlsx("PM2.5_Emission_AZ_60 EIS emission sectors.xlsx", sheet = 'Emission_County', colNames = TRUE)
    colors = c("#F1EEF6", "#D4B9DA", "#C994C7", "#DF65B0", "#DD1C77", 
               "#980043")
    PM25$colorBuckets <- as.numeric(cut(PM25$PM25, c(0, 5, 10, 20, 30,40, 50)))
    map("county",'Arizona', col = colors[PM25$colorBuckets], fill = TRUE,boundary = TRUE, resolution = 0, 
        lty = 1, projection = "polyconic")
    title("PM2.5 Emission by county, 2011")
    leg.txt <- c("<5", "5-10", "10-20", "20-30", "30-40", ">40")
    legend("bottom", leg.txt, horiz = F, fill = colors,bty="n",title = 'Unit:1000 tons')

然后,输出数字如下所示。我尝试通过设置“顶部”,“左”来改变位置.... 但这个传说仍然与这个数字重叠。 谢谢你的帮助!

MAP

1 个答案:

答案 0 :(得分:0)

在我看来,你只是跑出了绘图区域。这对于空间图非常常见,这通常占据了大量的绘图域。我将域分为两个:一个用于空间绘图,另一个用于图例。以下代码执行此操作:

## a function to set up plotting region
## l: ratio of left region
## r: ratio of right region
split.region <- function(l, r) {
  layout(matrix(c(rep(1, l), rep(2, r)), nrow = 1))
  mai <- par("mai")
  mai[2] <- 0.1
  mai[4] <- 0
  par(mai = mai)
  }

# use 80% region for main image
# use 20% region for legend
split.region(4, 1)
## produce your main plot
image(x = 0:10/10, y = 0:10/10, matrix(rbinom(100, 1, 0.3), 10), bty= "n", xaxt = "n", yaxt = "n", ann = FALSE, main = "sample plot")
## set up 2nd plot, with nothing
plot(1:2, bty="n", ann=FALSE, xaxt = "n", yaxt = "n", col = "white")
## add your legend to your second plot
leg.txt <- c("<5", "5-10", "10-20", "20-30", "30-40", ">40")
## place legend at bottom left
legend("bottomleft", leg.txt, horiz = F, pch = 15, col = 1:6, bty="n", title = 'Unit:1000 tons', cex = 1.5)

sample

调整lr,直到您满意为止。