在一个图中绘制两个条件

时间:2014-04-05 14:57:37

标签: r plot conditional-statements

我很抱歉提出这样一个愚蠢的问题,但我无法找到答案...

所以我把这张桌子称为:" linearsep" :

  color x  y
1  red 1  1
2  red 1  3
3  red 3  3
4  red 2  4
5 blue 4  1
6 blue 6  3
7 blue 2 -2
8 blue 6 -1

每一行对应一个点(1,1; 1,3等......),我只想绘制''红色''用红色点,"蓝色"蓝点。

我知道这是相当愚蠢的:但是我无法找到一种方法来获得前四行的矢量。

我认为是这样的:

  

情节(linearsep $ color~x,linearsep $ color~y)

但显然它不起作用...... 我用ggplot测试了一些东西:

ggplot(data=a,
+        aes(x=x, y=y, colour=color)) + geom_point()

哪个有效,但似乎是一个' hack' ,我怎么才能得到我想要的矢量? 有人可以帮助我......再次抱歉这个愚蠢的问题

2 个答案:

答案 0 :(得分:1)

这是完整的电话

p <- ggplot(foo, aes(x,y)) + 
geom_point(aes(colour = color)) + 
scale_colour_manual(values = c("red","blue"))

现在你可以做到

p

print(p)

通过将ggplot指定给p,您可以在以后添加更多图层 例如,只做p + ggtitle("Plot Title")。这会比这更容易 再次输入所有内容。

要获取蓝色数据或任何其他条件,您可以进行子集和分配 它到新的data.frame或在ggplot调用中执行

ggplot(subset(a, colour == "blue"), aes(.....

答案 1 :(得分:0)

在基地R:

with(linearsep,plot(x,y,col=color,pch=16))

会给你两种颜色。如果linearsep$color是一个因素(它可能是),那么颜色将是红色和黑色,因为plot(...)使用因子级别而不是标签。您可以通过将因子转换为字符来解决这个问题。

linearsep$color <- as.character(linearsep$color)
with(linearsep,plot(x,y,col=color,pch=16))

现在颜色将是红色和蓝色。