R:根据它们的权重改变一些(但不是全部)绘制数据点的大小

时间:2013-09-18 09:09:57

标签: r plot

我在R中生成了一个图,其中每个数据点的大小对应于其各自的权重,例如:

x <- runif(10, 2, 200) 
y <- runif(10, 5.0, 7.5)
weighting <- c(1, 1, 1, 1, 1, 10, 15, 15, 25, 25)

我已使用cex调整了绘制数据字体的大小:

plot(x, y, cex = weighting)

由于绘图中的某些数据点因其高权重因素而非常大,因此我将所有点的大小缩小了plot(x, y, cex = weighting/5),这样可以得出如下情节: Example 1

不幸的是,加权小的数据点现在很小。我确信有可能只将尺寸限制在具有高加权因子的点上,并在正常尺寸下绘制其他点(,加权= 1 )。我不知道怎么做,有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

您还可以查看scale_size_area

中的ggplot
# you need to keep your data in a data.frame
df <- data.frame(x = x, y = y, weighting = weighting)
ggplot(data = df, aes(x = x, y = y, size = weighting)) +
  geom_point() +
  scale_size_area()

更新,cex和点数缩放
由于问题的主题是cex,我借此机会在R-help上引用a post by @Bert Gunter

“这是问题所在:为了准确 表示值,“点”=圆区域必须成比例 价值。也就是说,眼睛“看到”区域而不是半径 点“大小”。关于这一点的令人愉快的参考是Howard Wainer 1982年 美国统计局的一篇文章(不记得确切), “如何绘制糟糕的数据”(或者可能是“绘制”数据)。

无论如何,使用cex,我不知道是否用cex =绘制了一个点 1.23是一个点的面积或半径的1.23倍 - 或者两者都不是 用cex = 1绘制。实际上,它可能会有所不同 实现/ OS /图形字体。所以对我来说“画画”似乎更好 带符号()的点,你可以完全控制 大小

显然,如果我对此错了,请告诉我。“结束语录。

在同一个帖子中,@ Gabor Grothendieck指向this nice article,其中使用了base函数symbols。 “[c] ircles [are]按半径而不是区域大小错误的一个例子。大值显示得更大”,一个“Circles [is]正确按区域大小”,以及inches参数的位置用于设置最大气泡的大小。我认为这可能是basescale_size_area()中的ggplot相当。

答案 1 :(得分:1)

如何使用log weighting来确定尺寸?

plot(x, y, cex = log10(weighting))

答案 2 :(得分:0)

函数pmax可能有所帮助:

minCex <- 1
plot(x, y, cex = pmax(minCex, weighting / 5))