2014-11-23 241 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。但那是另一個問題。