簡體   English   中英

ggplot2:在箱線圖后面繪制線

[英]ggplot2: plotting line behind boxplot

我想我的箱線圖后面使用 geom_line 繪制一條線,我終於設法將線圖與箱線圖結合起來。 我有這個用於創建箱線圖的數據集:

>head(MdataNa)

            1           2           3           4           5           6           7
1 -0.02798634 -0.05740014 -0.02643664  0.02203644  0.02366325 -0.02868668 -0.01278713
2  0.20278229  0.19960302  0.10896017  0.24215229  0.31925211  0.29928739  0.15911725
3  0.06570653  0.08658396 -0.06019098  0.01437147  0.02078022  0.13814853  0.11369999
4 -0.42805441 -0.91945721 -1.05555731 -0.90877542 -0.77493682 -0.90620917 -1.00535742
5  0.39922939  0.12347996  0.06712451  0.07419287 -0.09517628 -0.12056720 -0.40863078
6  0.52821596  0.30827515  0.29733794  0.30555717  0.31636676  0.11592717  0.16957927

我有葡萄糖濃度,應繪制在此箱線圖后面的一條線上:

# glucose curve values
require("scales")
offconc <- c(0,0.4,0.8,1.8,3.5,6.9,7.3)
offtime <- c(9,11.4,12.9,14.9,16.7,18.3,20.5)

# now we have to scale them so they fit in the (boxplot)plot
time <- rescale(offtime, to=c(1,7))
conc <- rescale(offconc, to=c(-1,1))
glucoseConc <- data.frame(time,conc)
glucoseConc2 <- melt(glucoseConc, id = "time")

然后我繪制這個數據,但我只能繪制在箱線圖,而不是它背后的前面的葡萄糖曲線,我用這個代碼:

boxNa <- ggplot(stack(MdataNa), aes(x = ind, y = values)) +
  geom_boxplot() + 
  coord_cartesian(y = c(-1.5,1.5)) + 
  labs(list(title = "After Loess", x = "Timepoint", y = "M")) +
  geom_line(data=glucoseConc2,aes(x=time,y=value),group=1)

上面代碼的輸出:

上面代碼生成的圖

按照評論的建議進行編輯(不工作)

boxNa <- ggplot(stack(MdataNa), aes(x = ind, y = values)) +
  geom_line(data=glucoseConc2,aes(x=time,y=value),group=1) +
  geom_boxplot(data=stack(MdataNa), aes(x = ind, y = values)) + 
  coord_cartesian(y = c(-1.5,1.5)) + 
  labs(list(title = "After Loess", x = "Timepoint", y = "M")) 

這將給出以下錯誤:

錯誤:提供給連續刻度的離散值

可能我做錯了什么嗎?

這是一個解決方案。 這個想法是將 x 軸轉換為連續值:

ggplot() +
  geom_line(data=glucoseConc2,aes(x=time,y=value),group=1)+
  geom_boxplot(data=stack(MdataNA), aes(x = as.numeric(ind), y = values, group=ind)) + 
  coord_cartesian(y = c(-1.5,1.5)) + 
  labs(list(title = "After Loess", x = "Timepoint", y = "M"))+
  scale_x_continuous(breaks=1:7)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM