改变R中点的大小

时间:2010-09-23 05:38:14

标签: r graphics plot

我想使用R基础图形制作散点图,但如果需要,我可以使用ggplot。我有一个包含x和y坐标的数据框,还有另外两个协变量,称它们为a和b。我希望每个点的大小随a变化(a - >较大点的高值),并且每个点的亮度/坚固度随b变化(因此具有足够低b的那些点实际上是不可见的)。有没有人对如何做到这一点有任何建议? R图形的文档看起来很全面,但是如此笼统和高级,我几乎不知道从哪里开始。 谢谢你的帮助

3 个答案:

答案 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()或制作自己的颜色列表,并在绘图前定义为一个因素。