首页 文章

在一个图中绘制两个条件

提问于
浏览
0

我很抱歉问这么愚蠢的问题,但我找不到答案......

所以我把这张 table 称为:“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()

哪个有效,但看起来像'黑客',我怎么能得到我想要的矢量?有人可以帮助我...再次抱歉这个愚蠢的问题

2 回答

  • 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))
    

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

  • 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(.....
    

相关问题