Несколько линейных графиков с Errobar для данных, поступающих из двух таблиц

У меня есть две таблицы данных, одна с точками, которые я хочу построить (каждая точка в первом наборе данных является средним значением различных измерений), а вторая - стандартные отклонения для каждой точки.

Ниже я прикрепил скрипт R для создания линейного графика из первых данных, который работает нормально. С помощью кода я могу создать сюжет, как показано ниже

введите описание изображения здесь

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

  library(ggplot2)

##loads a dataframe and returns a ggplot object that can be externally modified and plotted
makeMultipleLinePlot <- function(data){

  require(reshape2)
  data$id <-rownames(data)
  melted <- melt(data)
  colnames(melted)<-c("Measurement","Month","Percentage")
  g<-ggplot(data=melted,
            aes(x=Month, y=Percentage, color=Measurement,group=Measurement)) +
    geom_line(size=1,alpha=0.8) + geom_point(size=4,aes(shape=Measurement))
  return(g)
}  


##load a table from google sheets. assumes the sheet has a single table
loadTableFromGoogleSheet <- function(url, sheet) {
  require(gsheet)
  a <- gsheet2text(url,sheetid=sheet, format='csv')
  data <- read.csv(text=a, stringsAsFactors=FALSE,header = TRUE,row.names = 1)
  return(data)
}


#URL of the google spreadsheet
url <- "docs.google.com/spreadsheets/d/10clnt9isJp_8Sr7A8ejhKEZXCQ279wGP4sdygsit1LQ"

gid.humidity    <- 2080295295  #gid of the google sheet containing humidity data
data.humidity<-loadTableFromGoogleSheet(url,gid.humidity)

gid.humidity_sd <- 1568896731 #gid of the google sheet containing standard deviations for each measurement in the humidity data
data.humidity_sd<-loadTableFromGoogleSheet(url,gid.humidity_sd)

ggsave(filename="lineplot/humidity.pdf", plot=makeMultipleLinePlot(data.humidity))  
#ggsave(filename="lineplot/humidity.pdf", plot=makeMultipleErrorPlot(data.humidity,data.humidity_sd))  

1 ответ

Решение

Это приборка двух data.frameприсоединиться к ним и plot результат, используя geom_errorbar:

library(dplyr)
library(tidyr)
library(ggplot2)

df <- data.humidity %>% 
  mutate(measure = row.names(.)) %>% 
  gather(month, value, -measure) 


df_sd <- data.humidity_sd %>% 
  mutate(measure = substr(row.names(.), 1, 2)) %>% 
  gather(month, sd, -measure)

dfF <- full_join(df, df_sd)
#> Joining, by = c("measure", "month")


ggplot(dfF, aes(month, value, group = measure, color = measure))+
  geom_line(size=1,alpha=0.8) + 
  geom_point(aes(shape = measure)) +
  geom_errorbar(aes(ymin = value - sd, ymax = value + sd), width = .3)

Другие вопросы по тегам