Как построить несколько непрерывных переменных против фактора с линейным графиком и барами ошибок в ggplot2? - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь построить линейный график с ggplot2 в R с относительным изобилием нескольких переменных по времени как фактор (T0, T1, T2, T3, T4).У меня есть множество бактериальных таксонов в каждом образце по столбцам.

Слушайте, как выглядит мой фрейм данных:

> head(df)
               X f__Entomoplasmatales.Incertae.Sedis f__Propionibacteriaceae f__Corynebacteriaceae f__Paenibacillaceae
1   Jan2016.acr2                                   0             0.000000000           0.002253267         0.004055881
2  Jan2016.acr30                                   0             0.000000000           0.000000000         0.000000000
3  Jan2016.acr56                                   0             0.001461406           0.394712369         0.000000000
4  Jan2016.acr62                                   0             0.000194742           0.000389484         0.000000000
5  Jan2016.acr90                                   0             0.000000000           0.000636132         0.000000000
6 Jan2017.acr127                                   0             0.000000000           0.000000000         0.000000000
  f__Streptococcaceae f__Staphylococcaceae f__Xanthomonadaceae f__Pseudomonadaceae f__Endozoicomonadaceae f__Alteromonadaceae
1         0.000000000          0.000000000                   0         0.000000000             0.94637224         0.000901307
2         0.000000000          0.000000000                   0         0.000000000             0.70676032         0.176470588
3         0.025773881          0.013285506                   0         0.008104158             0.04118507         0.000000000
4         0.000194742          0.000000000                   0         0.000000000             0.98364167         0.000000000
5         0.000000000          0.006149279                   0         0.008269720             0.94868533         0.000000000
6         0.000000000          0.000000000                   0         0.000000000             0.98713398         0.000000000
  f__Enterobacteriaceae f__Vibrionaceae f__Moraxellaceae f__Sphingomonadaceae f__Reyranellaceae f__Rhizobiaceae time
1                     0     0.001351960      0.000000000          0.000000000       0.003154574               0   T0
2                     0     0.000000000      0.007901668          0.002633889       0.000000000               0   T0
3                     0     0.007174173      0.330941942          0.000000000       0.000000000               0   T2
4                     0     0.000292113      0.002434275          0.000000000       0.000000000               0   T2
5                     0     0.000000000      0.005513147          0.000000000       0.000000000               0   T1
6                     0     0.000000000      0.000000000          0.000000000       0.000000000               0   T1

Я попробовал следующий код для построения одного столбца (f__Endozoicomondaceae)в виде линейного графика, но я хотел бы построить все разные столбцы на одном графике с разными цветными линиями.Я приложил сюжет.Есть предложения?

# Functions
sderr <- function(x) {sd(x)/sqrt(length(x))}

data_summary <- function(data, varname, groupnames){
  require(plyr)
  summary_func <- function(x, col){
    c(mean = mean(x[[col]], na.rm=TRUE),
      sd = sderr(x[[col]]), na.rm=TRUE)
  }
  data_sum<-ddply(data, groupnames, .fun=summary_func,
                  varname)
  data_sum <- rename(data_sum, c("mean" = varname))
  return(data_sum)
}

df_endo <- data_summary(df, varname="f__Endozoicomonadaceae", groupnames=c("time"))

ggplot(df_endo, aes(time, f__Endozoicomonadaceae, group = 1)) +
  geom_line() +
  geom_point() + 
  geom_errorbar(aes(ymin=f__Endozoicomonadaceae-sd, ymax=f__Endozoicomonadaceae+sd), width=.05,
                position = position_dodge(0.05)) +
  ylab("Relative Abundance") + xlab("Time") + theme_bw() 

enter image description here

1 Ответ

0 голосов
/ 08 июня 2019

Большое спасибо, я нашел решение:

df <- df[,-1]
df_long <- df %>% gather(Family, Relabund, -time)
df_relabund <- data_summary(df_long, varname="Relabund", groupnames=c("time", "Family"))

ggplot(df_relabund, aes(x = time, y = Relabund, color = Family, group = Family)) +
  geom_point() +
  geom_line() +
#  scale_color_brewer(palette = 'Dark2') +
  theme_classic(base_size = 12) +
  geom_errorbar(aes(ymin=Relabund-sd, ymax=Relabund+sd), width=.05,
              position = position_dodge(0.05)) +
  ylab("Relative Abundance") + xlab("Time") + theme_bw() 
```[![enter image description here][1]][1]


  [1]: https://i.stack.imgur.com/p7ZjT.png
...