很抱歉没有为我的问题包含任何示例数据。我找不到轻松生成示例形状文件的方法。希望有经验的用户ggplot
可以从下面的描述中看到我想做的事情。
我有:
data.frame
带有样本图信息的X (plotid
,var1
,var2
,var3
,var4
, ...)Y
带有示例图空间信息的多边形 shapefile
shapefile Y
(with maptools
) 和fortify
ing as data.frame
Z
( ggplot2
) 的导入工作正常。melt
荷兰国际集团工作同样好X
。-ing和to也可以。X_melted
merge
Z
X_melted
mapdf
这意味着现在我们有了一个data.frame
包含空间信息的长格式和var1
, var2
, var3
, ...</p>
现在我想像这样绘制这个数据框:
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
从0
to 5
,var2
from 0
to 400
,var3
from 5
to10
等。在该示例中,填充颜色的图例从0
to 400
。var2
画得很好,但var1
基本上var3
是相同的颜色。
有没有办法可以为刻面的每个面板使用不同的图例?或者这根本不可能(还)用facet_wrap
or facet_grid
in ggplot
?
我可以为每个变量制作单独的图并将它们与视口连接起来,但是有很多变量,这将是很多工作。
或者是否有其他包或方法可以用来完成我想做的事情?
非常感谢您的帮助。:)
编辑:在ggplot2
-package 描述的帮助下,我构建了一个示例来说明我的问题:
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
了地图上的不同值。然而,在左侧的面板上,所有多边形都具有相同的颜色。这是合乎逻辑的,因为所有面板只使用一种颜色渐变。我可以为每个面板使用不同的颜色渐变吗?