如何在R中的散点图中更改点的大小和颜色

时间:2015-02-08 15:04:06

标签: r

You can find the example data in below

我想要着色,识别那些在另一种颜色中高于0的点,在另一种颜色中低于0。有什么方法可以知道它们是哪些点?我只是想添加一个更高和更低-1的边框,然后说在另一种颜色中显示那些高于1的点,并将它们的名称打印在靠近它的位置,同时低于-1但是另一种颜色

此评论没有帮助,因为随机读取行

x=(1:990)
cl = 1*(z>0) + 2*(z<=0)
cx = 1*(z>0) + 1.2*(z<=0)
plot(y~x, col=cl, cex=cx)

enter image description here

我不想在零附近产生红点和黑点。 我想分别检测那些高于和低于1和-1的点。 我还想用不同颜色和不同尺寸绘制它们

2 个答案:

答案 0 :(得分:1)

正如所提到的评论,有很多方法可以做到这一点。假设您使用的是plot()功能,这是一种简单的方法,可以满足您的需求。关键是要理解plot()的论点。点的颜色由col确定,尺寸由cex确定,依此类推。这些都应该是y相同大小的向量(否则使用回收规则)。请参阅?plot

N = 999 # I don't care how many obs you have
y = rnorm(N)

# vector of colors (black for y>0, red for y<=0)
cl = 1*(y>0) + 1.2*(y<=0)

# vector of point sizes relative to default (1 for y>0, 1.2 y<=0)
cx = 1*(y>0) + 1.2*(y<=0)  

plot(y, col=cl, cex=cx)

编辑:

我尝试给出一个通用示例(例如,通过第三个变量着色点),但OP坚持认为他有2个变量。好吧,只需按z重命名x即可。

编辑:

# last edit I make
set.seed(1)
y = rnorm(N)
cl = rep(1, length(y))
cl[y > 0.5] = 2
cl[y < -0.5] = 3

plot(y, col=cl)

以下是它给出的内容:enter image description here

答案 1 :(得分:1)

在0附近生成一些数据:

d<-rnorm(1000,0,1)

要获得高于0的分数:

d[d>0]

识别高于0的点的索引:

which(d>0)

绘制点高于0,绿色低于0,红色。此外,0以上的点与0以下的点的大小不同:

s <- character(length(d))
s[d>0] <- "green"
s[d<0] <- "red"
# s[d > -0.5 & d < 0.5] <- "black" # to color points between 0.5 and -0.5 black
plot(d, col=s)  # color effect only

sz <- numeric(length(d))
sz[d>0] <- 4  # I'm giving points greater than 0 a size of 4
sz[d<0] <- 1

plot(d, col=s, cex=sz)  # size and color effect

现在,您还分别提到了1和-1之上和之下的点。您应该能够按照上面的代码执行您想要的操作。

要为符合特定条件的点添加标签(例如,分别大于或小于0.2和-0.2),您可以使用text功能:

text(which(abs(d) > .2), d[abs(d) > .2], cex = 0.5, pos=3)

pos = 3表示将标签放在点上方,文本的cex参数用于调整标签大小。