2014-01-10 159 views
1

我使用ggplot2在1頁中繪製三個不同的箱子作爲三個箱形圖。在每一集中,我都想強調一點,並說明點與其他點的區別在哪裏,它是否在框內?或外面。在箱形圖中標出一個點

這裏是我的數據點

CDH  1KG  NHLBI 
CDH 301  688  1762 
RS0 204  560  21742 
RS1 158  1169 1406 
RS2 182  1945 1467 
RS3 256  2371 1631 
RS4 198  580  1765 
RS5 193  524  1429 
RS6 139  2551 1469 
RS7 188  702  1584 
RS8 142  4311 1461 
RS9 223  916  1591 
RS10 250 794  1406 
RS11 185 539  1270 
RS12 228 641  1786 
RS13 152 557  1677 
RS14 225 1970 1619 
RS15 196 458  1543 
RS16 203 2891 1528 
RS17 221 1542 1780 
RS18 258 1173 1850 
RS19 202 718  1651 
RS20 191 6314 1564 


library(ggplot2) 
rm(list = ls()) 
orig_table = read.table("thedata.csv", header = T, sep = ",") 
bb = orig_table # have copy of the data 
bb = bb[,-1] # since these points, the ones in the first raw are my interesting point, I exclude them from the sets for the time being 
tt = bb 
mydata = cbind(c(tt[,1], tt[,2], tt[,3]), c(rep(1,22),rep(2,22),rep(3,22))) # I form the dataframe 
data2 = cbind(c(301,688,1762),c(1,2,3)) # here is the points that I want to highlight - similar to the first raw 
colnames(data2) = c("num","gro") 
data2 = as.data.frame(data2) # I form them as a dataframe 

colnames(mydata) = c("num","gro") 
mydata = as.data.frame(mydata) 
mydata$gro = factor(mydata$gro, levels=c(1,2,3)) 
qplot(gro, num, data=mydata, geom=c("boxplot"))+scale_y_log10() # I am making the dataframe out of 21 other ponts 
# and here I want to highlight those three values in the "data2" dataframe 

我感謝你的幫助

+0

高亮怎麼樣?只要讓這三點變成另一種顏色? – rawr

+0

是的 - 使他們在「紅色,藍色,綠色」會很好。 – user702846

回答

3

首先,ggplot容易很多,如果你在長格式使用數據的使用。 meltreshape2幫助與:

library(reshape2) 
library(ggplot2) 
df$highlight <- c(TRUE, rep(FALSE, nrow(df) - 1L)) # tag first row as interesting 
df.2 <- melt(df) # convert df to long format 
ggplot(subset(df.2, !highlight), aes(x=variable, y=value)) + 
    geom_boxplot() + scale_y_log10() + 
    geom_point(        # add the highlight points 
    data=subset(df.2, highlight), 
    aes(x=variable, y=value), 
    color="red", size=5 
) 

現在,我所做的就是添加一個真正的,第一行,融化的數據與ggplot兼容,除了與亮點繪製的點== TRUE箱形圖。

enter image description here

編輯:這是我如何使數據:

df <- read.table(text=" CDH  1KG  NHLBI 
CDH 301  688  1762 
RS0 204  560  21742 
RS1 158  1169 1406 
RS2 182  1945 1467 
RS3 256  2371 1631 
RS4 198  580  1765 
RS5 193  524  1429 
RS6 139  2551 1469 
RS7 188  702  1584 
RS8 142  4311 1461 
RS9 223  916  1591 
RS10 250 794  1406 
RS11 185 539  1270 
RS12 228 641  1786 
RS13 152 557  1677 
RS14 225 1970 1619 
RS15 196 458  1543 
RS16 203 2891 1528 
RS17 221 1542 1780 
RS18 258 1173 1850 
RS19 202 718  1651 
RS20 191 6314 1564", header=T) 
+0

謝謝 - 抱歉,問這個 - 看起來你已經爲變量使用了不同的名字。基本上,我不知道你是如何組建df的,它在那裏?是「mydata」還是「bb」? – user702846

+0

@ user702846我剛剛在帖子頂部使用了文本列表。 X被添加到1KG,因爲變量名不允許以1開頭,我想。這可以修復。你想要什麼變量名? – BrodieG

+0

我把矩陣讀入df,然後運行你的代碼。 R在子集函數中抱怨「高亮」。 – user702846