对不起,不包含任何例的数据对于我的问题。我不能找到一种方式很容易产生一个例子形状的文件。我们希望,经验丰富的用户的 ggplot 可以看到什么我想要做的是从下面的说明。

我已经得到了:

  • 一个 data.frame X与信息有关的样本地块(plotid, var1, var2, var3, var4, …)

  • 面要素 Y 与空间信息的样本地块

进口的要素 Y (与 maptools)和 fortify作为荷兰国际集团 data.frame Z (ggplot2)。 melting XX_melted 工作同样好。 merge-ing ZX_meltedmapdf 工作为好。

这意味着,现在我们有一个 data.frame 在长期形成的空间信息和 var1, var2, var3, …

现在我想绘制这种数据的框架是这样的:

pl1 <- ggplot(mapdf,aes(long,lat),group=group)
pl1 <- pl1 + geom_polygon(aes(group=group,fill=value),colour="black")
pl1 <- pl1 + facet_grid(variable ~ .)
pl1 <- pl1 + coord_equal(ratio = 1)
pl1

结果是一个很好的阴谋的一个小组对每一个变量。该地图的面板都是相同的,但是填补颜色的变化价值观的变量。到现在,一切工作就像一个魅力...有一个问题:

变量具有不同的最小和最大价值。例如 var1 从去 05, var20400, var3510, 等等。在这个例子中,例填补颜色从 0400. var2 是很好地绘制的,但是 var1var3 基本上在相同的颜色。

有没有办法我可以用一个不同的传说对于每个小组的方方面面?或者这根本没有(尚未)可能 facet_wrapfacet_gridggplot?

我可以让个别地对每一个变量,并加入他们与视,但有很多的变量,这将是一个很大的工作。

或是有可能的另一个包裹或方法我可以用来完成什么样我想做什么?

和帮助将是非常多的赞赏。:)

编辑:有帮助的 ggplot2-包描述,我建造一个示例,说明了我的问题:

ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))
values <- data.frame(
id = ids,
val1 = cumsum(runif(6, max = 0.5)),
val2 = cumsum(runif(6, max = 50))
)
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)
)

values <- melt(values)
datapoly <- merge(values, positions, by=c("id"))

p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id),colour="black")
p <- p + facet_wrap(~ variable)
p

小组在正确说明不同价值观为 var2 在地图上。在该小组离开但是,所有面具有相同的颜色。这是合乎逻辑的,因为只有一种颜色渐变为用于所有的板。我可以用不同的颜色,梯度为每个小组?

有帮助吗?

解决方案

目前只能有一个规模每块地(为一切除了x和y)。

其他提示

与电网的善良

align.plots <- function(..., vertical=TRUE){
#http://ggextra.googlecode.com/svn/trunk/R/align.r
  dots <- list(...)
  dots <- lapply(dots, ggplotGrob)
  ytitles <- lapply(dots, function(.g) editGrob(getGrob(.g,"axis.title.y.text",grep=TRUE), vp=NULL))
  ylabels <- lapply(dots, function(.g) editGrob(getGrob(.g,"axis.text.y.text",grep=TRUE), vp=NULL))
  legends <- lapply(dots, function(.g) if(!is.null(.g$children$legends))
                    editGrob(.g$children$legends, vp=NULL) else ggplot2:::.zeroGrob)

  gl <- grid.layout(nrow=length(dots))
  vp <- viewport(layout=gl)
  pushViewport(vp)
  widths.left <- mapply(`+`, e1=lapply(ytitles, grobWidth),
                        e2= lapply(ylabels, grobWidth), SIMPLIFY=F)
  widths.right <- lapply(legends, function(g) grobWidth(g) + if(is.zero(g)) unit(0, "lines") else unit(0.5, "lines")) # safe margin recently added to ggplot2
  widths.left.max <- max(do.call(unit.c, widths.left))
  widths.right.max <- max(do.call(unit.c, widths.right))

  for(ii in seq_along(dots)){
    pushViewport(viewport(layout.pos.row=ii))
    pushViewport(viewport(x=unit(0, "npc") + widths.left.max - widths.left[[ii]],
                          width=unit(1, "npc") - widths.left.max + widths.left[[ii]] -
                                                 widths.right.max + widths.right[[ii]],
                          just="left"))
    grid.draw(dots[[ii]])
  upViewport(2)
  }
}



p <- ggplot(datapoly[datapoly$variable=="val1",], aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id),colour="black")
p1 <- ggplot(datapoly[datapoly$variable=="val2",], aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id),colour="black")
align.plots( p,p1)

在风险的陈述显而易见的,它似乎应该像你以色的百分比,而不是原始价值观。然后你改变价值观和你的传说从0到1。

也许有点不寻常,但你可以尝试保你的"价值"。例如:

p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=factor(value), group=id),colour="black")
p <- p + facet_wrap(~ variable)
p

ggplot2使用因素,以创建传说。所以如果你可以添加一栏,将"价值",并将其分纳入考虑范围,则可以取代"价值"的范围。

创建一个列,像"f":

    id variable        value   x    y f
1  1.1     val1   0.09838607 2.0 -0.5 0.09-0.13
2  1.1     val1   0.09838607 1.0  0.0 0.09-0.13
3  1.1     val1   0.09838607 1.1  1.0 0.09-0.13
4  1.1     val1   0.09838607 2.2  0.5 0.09-0.13
25 2.1     val1   0.13121347 1.0  0.0 0.13-0.20

...

然后使用:

p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=f, group=id),colour="black")
p <- p + facet_wrap(~ variable)
p

你必须到指定的类别,这可能是耗时的。但至少对图将来如何你想要的。基本上,你就会被重新编码的数据为另一个列。这里是一些例子:

http://www.statmethods.net/management/variables.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top