2014-11-23 198 views
1

我想要绘制在R.使用GGPLOT2散点图我有数据为csv格式如下突出显示特定的点在GGPLOT2

  A    B 

-4.051587034 -2.388276692 

-4.389339837 -3.742321425 

-4.047207557 -3.460923901 

-4.458420756 -2.462180905 

-2.12090412  -2.251811973 

我想高光两种特定点与对应-2.462180905和-3.742321425并以不同的颜色绘制。这应该与情节中的默认颜色不同。我试过下面的代码

library(ggplot2) 

library(reshape2) 

library(methods) 

library(RSvgDevice) 

Data<-read.csv("table.csv",header=TRUE,sep=",") 

data1<-Data[,-3] 

plot2<-ggplot(data1,aes(x = A, y = B)) + geom_point(aes(size=2,color=ifelse(y=-2.462180905,'red'))) 

graph<-plot2 + theme_bw()+opts(axis.line = theme_segment(colour = "black"),panel.grid.major=theme_blank(),panel.grid.minor=theme_blank(),panel.border = theme_blank()) 

ggsave(graph,file="figure.svg",height=6,width=7) 

它不工作,我想要的方式。它以相同的颜色给所有的点。任何人都可以帮忙吗?

回答

0

的另一种方式,这可能是或多或少有效的根据您的要求,将再添geom_point():

x <- c(-4.051587034, -4.389339837, -4.047207557, -4.458420756, -2.12090412) 
y <- c(-2.388276692, -3.742321425, -3.460923901, -2.462180905, -2.251811973) 
d <- data.frame(x, y) 

require("ggplot2") 
h <- c(2, 4) # put row numbers in here or use condition 

ggplot() + 
    geom_point(data = d, aes(x, y), colour = "red", size = 5) + 
    geom_point(data = d[h, ], aes(x, y), colour = "blue", size = 5) 
# notice the colour is outside the aesthetic arguments 

它给你这样的:

highlighted points

1

为高亮点以外的所有点添加一个具有相同值的不同列,将颜色美学分配给该列,然后手动更改颜色。

data1$highlight <- data1$B == -2.462180905 # FALSE except for the one you want 

ggplot(data1, aes(x = A, y = B)) + 
    geom_point(aes(colour = highlight), size = 2) + 
    scale_colour_manual(values = c("FALSE" = "black", "TRUE" = "red")) 

注意的是,在第一行的条件必须是准确的,以便在合适的行即可TRUE。要么确保值是准确的,要么使用与所需行相匹配的条件。

另请注意,opts已弃用。改为使用theme。但那是另一个问题。