首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改R中点的大小

更改R中点的大小
EN

Stack Overflow用户
提问于 2010-09-23 13:38:14
回答 3查看 16.2K关注 0票数 0

我想用基于R的图形做一个散点图,但如果有必要的话,我可以使用ggplot。我有一个包含x和y坐标的数据框,还有另外两个协变量,称为a和b。我希望每个点的大小随a(a ->较大点的高值)而变化,每个点的亮度/实度随b而变化(以便那些b足够低的点实际上是不可见的)。有人对如何做到这一点有什么建议吗?R图形的文档看起来很全面,但太笼统和高层次了,以至于我几乎不知道从哪里开始。谢谢你的帮忙

EN

回答 3

Stack Overflow用户

发布于 2010-09-23 20:57:24

下面的样本线显示了如何在绘图中同时使用size和alpha

代码语言:javascript
运行
复制
plot(1:6, sample(6), cex = sample(6)/2, col = rgb(0,0,0, sample(6)/6), pch = 19)
票数 4
EN

Stack Overflow用户

发布于 2010-09-23 15:37:10

cex参数是一种更改绘图字符大小的快速而繁琐的方法,但是如果您想要有一个信息性的比例等,您确实需要做很多工作。symbols()是使用基础图形更精确地实现这一点的一种方法。

使用一些虚拟数据,下面是一个使用cex和一个使用symbols()的图

代码语言:javascript
运行
复制
## 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))

可以使用cex示例中的col参数或symbols示例中的fg参数对点进行着色。诀窍将是获得一个适当的规模。在我们的虚拟数据中,b在区间(0,1]上,因此我们的规模可能是将其分为5个类别,并使用5种绘图颜色中的一种。

代码语言:javascript
运行
复制
## 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已经为您完成了所有繁重的工作。

代码语言:javascript
运行
复制
## Eg using ggplot
require(ggplot2)
p <- ggplot(dat, aes(X, Y, colour = b, size = a))
p + geom_point()

HTH

票数 3
EN

Stack Overflow用户

发布于 2010-09-23 14:03:27

这在R-help中经常出现,比如here。基本上,cex将成为更改点大小的有趣参数。对于更改点的颜色,我建议设置col=heat.colors()或制作自己的颜色列表,并在绘图前定义为一个因素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3775678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档