【发布时间】:2018-03-29 22:27:53
【问题描述】:
我正在制作一张地图,其中每个点的颜色与一个响应变量成正比,而点的大小与另一个成正比。我注意到,当我尝试使用公式表示法绘制点时,事情变得混乱,而默认表示法按预期执行。我以前曾多次使用公式符号绘制地图,并认为这些符号几乎可以互换。为什么这些会产生不同的结果?我已经阅读了plot.formula 和plot.default 文档,但无法弄清楚。基于this,我想知道这是否与dat 的列被强制因素有关,但我不确定为什么会发生这种情况。有什么想法吗?
考虑以下示例数据框,dat:
latitude <- c(runif(10, min = 45, max = 48))
latitude[9] <- NA
longitude <- c(runif(10, min = -124.5, max = -122.5))
longitude[9] <- NA
color <- c("#00FFCCCC", "#99FF00CC", "#FF0000CC", "#3300FFCC", "#00FFCCCC",
"#00FFCCCC", "#3300FFCC", "#00FFCCCC", NA, "#3300FFCC")
size <- c(4.916667, 5.750000, 7.000000, 2.000000, 5.750000,
4.500000, 2.000000, 4.500000, NA, 2.000000)
dat <- as.data.frame(cbind(longitude, latitude, color, size))
根据公式符号绘制
plot(latitude ~ longitude, data = dat, type = "p", pch = 21, col = 1, bg = color, cex = size)
产生
this mess 和以下错误:graphical parameter "type" is obsolete。
根据默认符号绘制
plot(longitude, latitude, type = "p", pch = 21, col = 1, bg = color, cex = size)
工作 as expected,虽然有同样的错误。
【问题讨论】:
-
它必须是数据类型,因为
plot(as.numeric(latitude) ~ as.numeric(longitude), data = dat, type = "p", pch = 21, col = 1, bg = color, cex=as.numeric(dat$size))对我来说很好用。 -
@mysteRious 你说得对,它运行是对的,但是颜色已经关闭,这仍然令人担忧。但是,如果我按照您的思路运行
plot(as.numeric(latitude) ~ as.numeric(longitude), data = dat, type = "p", pch = 21, col = 1, bg = as.vector(dat$color), cex = as.numeric(dat$size)),它就可以工作。所以它肯定是数据类型。