我想使用R基础图形制作散点图,但如果需要,我可以使用ggplot。我有一个包含x和y坐标的数据框,还有另外两个协变量,称它们为a和b。我希望每个点的大小随a变化(a - >较大点的高值),并且每个点的亮度/坚固度随b变化(因此具有足够低b的那些点实际上是不可见的)。有没有人对如何做到这一点有任何建议? R图形的文档看起来很全面,但是如此笼统和高级,我几乎不知道从哪里开始。 谢谢你的帮助
答案 0 :(得分:4)
下面的示例行显示了如何在图中同时使用大小和alpha
plot(1:6, sample(6), cex = sample(6)/2, col = rgb(0,0,0, sample(6)/6), pch = 19)
答案 1 :(得分:3)
cex
参数是一种快速而肮脏的方式来改变绘图字符的大小,但如果你想要一个信息量表等,你需要工作很多。symbols()
是使用基本图形更准确地做到这一点的一种方法。
使用一些虚拟数据,这里有一个使用cex
的图表和一个使用symbols()
的图表:
## dummy data first
set.seed(123)
dat <- data.frame(X = rnorm(10), Y = rnorm(10,2,2), a = runif(10), b = runif(10))
## plot using cex
plot(Y ~ X, data = dat, cex = 10 * a)
## plot using symbols()
with(dat, symbols(X, Y, circles = a))
您可以使用col
示例中的cex
参数或使用符号大小写中的fg
参数为点着色。诀窍将是适当的规模。在我们的虚拟数据中,b
位于区间(0,1)上,因此我们的比例可能是将其分为5个类别并使用五种绘图颜色中的一种。
## Eg using heat.colors(5)
cut.pts <- seq(0, 1, by = 0.1)
cuts <- with(dat, cut(b, cut.pts))
with(dat, symbols(X, Y, circles = a, bg = heat.colors(5)[cuts]))
如您所见,选择合适的颜色非常重要,因为这里一种颜色与背景颜色相同。
使用ggplot2
执行此操作可能会更加简单,因为Hadley Wickham已经为您完成了所有繁重的工作。
## Eg using ggplot
require(ggplot2)
p <- ggplot(dat, aes(X, Y, colour = b, size = a))
p + geom_point()
HTH
答案 2 :(得分:1)
这通常出现在诸如here之类的R-help中。基本上,cex
将成为改变点数大小的关注点。为了改变点的颜色,我建议设置col=heat.colors()
或制作自己的颜色列表,并在绘图前定义为一个因素。