Как нарисовать 2 средних графика линии с КИ в 1 графике - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь нарисовать 2 линии средств на одном графике с помощью КИ.Я использовал gplots, у которого есть функция plotmeans, чтобы нарисовать линию, но я могу нарисовать только одну линию на одном графике.Кто-нибудь может помочь?Большое спасибо

Это пример моих данных

Group  MC  MB
G1     5    10
G2     8    8
G3     14   7  
G4     20   6
G1     10   15
G2     16   13   
G3     30   9
G4     25   7
G1     15   29
G2     20   22
G3     25   20
G4     35   15 

Я хотел бы изобразить MC и MB в виде линии, значение которой является средним значением и CI для каждой группы.xlab будет group.ylab - это значение MC и MB.

Я бы ожидал что-то вроде этого enter image description here

Большое спасибо.

1 Ответ

0 голосов
/ 03 апреля 2019

Это можно сделать с помощью комбинации tidyr, dplyr и ggplot2.

# Your data
group <- c("G1", "G2", "G3", "G4", "G1", "G2", "G3", "G4", "G1", "G2", "G3", "G4")
mc <- c(5, 8, 14, 20, 10, 16, 30, 25, 15, 20, 25, 35)
mb <- c(10, 8, 7, 6, 15, 13, 9, 7, 29, 22, 20, 15)
df <- data.frame(group, mc, mb)

Сначала мы собираем ваши данные в длинном формате с категориями столбцов (cat) и значением.

# Requires library "tidyr"
library(tidyr)

# Gathering data
df_gathered <- gather(df, cat, value, 2:3)

Затем вы вычисляете среднее значение и ошибку для каждой комбинации группы и категории:

# Requires the library "dplyr"
library(dplyr)

# Calculating mean and error by group
df_mean_by_group <- df_gathered %>% 
  group_by(group, cat) %>%
  summarise(mean = mean(value), error = qnorm(0.975)*sd(value)/length(value))

Наконец, мы строим график группировки линий по категориям (чтобы соединить их), и мы также окрашиваем их по категориям:

# Requires "ggplot2"
library(ggplot2)

# Plotting it all
ggplot(df_mean_by_group, aes(x=group, y=mean, colour=cat, group=cat)) + 
  geom_errorbar(aes(ymin=mean-error, ymax=mean+error), colour="black", width=.1) +
  geom_line() +
  geom_point(size=3)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...