【问题标题】:Behavior of "fill" argument in geom_polygon in RR中geom_polygon中“填充”参数的行为
【发布时间】:2019-09-23 00:00:25
【问题描述】:

我试图了解 ggplot 的 geom_polygon 中“填充”参数的行为。

我有一个数据框,其中我有来自感兴趣度量的多个值,这些值是在每个州的不同县获得的。我已将我的数据库与“地图”包中的坐标合并,然后通过 ggplot 调用该图。考虑到填充变量中提供了不同的数字(平均值?中值?插值?),我不明白 ggplot 如何选择显示状态的颜色。

复制我的一段数据框来解释我的意思:

state=rep("Alabama",3)
counties=c("Russell","Clay","Montgomery")
long=c(-87.46201,-87.48493,-87.52503)
lat=c(30.38968,30.37249,30.33239)
group=rep(1,3)
measure=c(22,28,17)
df=data.frame(state, counties, long,lat,group,measure)

调用ggplot

p <- ggplot()
p <- p + geom_polygon(data=df, aes(x=long, y=lat, group=group, fill=df$measure),colour="black"
) 
print(p)

使用完整的数据框,我有数百行迭代 17 个县和阿拉巴马州多边形的所有坐标集。 ggplot 如何为状态填充提供单一颜色?

再次,我假设它以某种方式对每组坐标提供的填充值进行插值,但我不确定。

感谢大家的帮助。

【问题讨论】:

  • 旁注,我认为您应该使用数字来表示经度而不是字符,这是使用引号时创建的。
  • 当然,谢谢。实际上我也修改了它,但复制并粘贴了旧版本。已编辑

标签: r ggplot2 maps


【解决方案1】:

经过反复试验,看起来 fill 映射的 first 值用于填充多边形。填充比例的范围会考虑所有值。这是有道理的,因为文档没有提到任何聚合——我同意聚合函数也有意义,但我假设聚合函数将通过参数设置,如果那是实现的话。

相反,文档显示了一个示例(并建议)从两个数据帧开始,其中一个具有每个顶点的坐标,另一个具有每个多边形的单行(和单个填充值),并根据一个 ID 列。

这是一个演示:

long=c(1, 1, 2)
lat=c(1, 2, 2)
group=rep(1,3)
df=data.frame(long,lat,group,
              m1 = c(1, 1, 1),
              m2 = c(1, 2, 3),
              m3 = c(3, 1, 2),
              m4 = c(1, 10, 11),
              m5 = c(1, 5, 11),
              m6 = c(11, 1, 10))
library(ggplot2)
plots = lapply(paste0("m", 1:6), function(f)
  ggplot(df, aes(x = long, y = lat, group = group)) +
    geom_polygon(aes_string(fill = f)) +
    labs(title = sprintf("%s:, %s", f, toString(df[[f]])))
  )

do.call(gridExtra::grid.arrange, plots)

【讨论】:

  • 感谢您抽出时间来测试这个 Gregor。非常有用的信息。我有点害怕这种反应,我同意聚合函数需要一个参数来指定方法。
  • 我的意思是,根据需要聚合数据非常容易。使用 dplyr df = df %&gt;% group_by(state) %&gt;% mutate(agg_measure = mean(measure))。然后使用agg_measure 作为填充美学。恕我直言,人们试图过多地依赖ggplot 进行数据操作...如果您坚持使用dplyrdata.table 进行数据操作,而使用ggplot 仅用于绘图,代码通常会更清晰。
  • 是的,我也同意这一点,无论如何,这实际上是我的解决方案,只是为了真正了解发生了什么,但对我来说,可能已经存在一些聚合函数似乎是合理的。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 2017-07-17
  • 2016-03-02
  • 2022-01-04
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多