Почему мои ошибки на моем графике неуместны? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть график, который я пытаюсь сделать с ggplot и gridExtra, но мои панели ошибок неуместны. Я хочу, чтобы панели ошибок были вверху каждого бара, а не там, где они сейчас. Что я могу сделать, чтобы исправить их?

Кроме того, какие параметры ggsave сгенерируют график с теми же параметрами пикселей, которые я использую с базовой функцией r png? Кажется, ggsave работает более последовательно, чем эта функция, поэтому мне нужно ее использовать.

Данные:

###Open packages###
library(readxl)
library(readr)
library(dplyr)
library(tidyr)
library(ggplot2)
library(gridExtra)

#Dataframes
set1 <- data.frame(type = c(1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3),
                   flowRate = c(24,
                                24,
                                24,
                                45,
                                45,
                                45,
                                58,
                                58,
                                58,
                                24,
                                24,
                                24,
                                45,
                                45,
                                45,
                                58,
                                58,
                                58,
                                24,
                                24,
                                24,
                                45,
                                45,
                                45,
                                58,
                                58,
                                58),
                   speed = c(0.563120137230256,
                             0.301721535875508,
                             0.170683367727845,
                             0.698874950490133,
                             0.158488731250147,
                             0.162788814307903,
                             0.105943103772245,
                             0.682354871986346,
                             0.17945825301837,
                             0.806637519498752,
                             0.599304186634932,
                             0.268788206619179,
                             0.518615600601962,
                             0.907628477211427,
                             0.144209408332705,
                             0.161586044320138,
                             0.946354993801663,
                             0.488881557759483,
                             0.497120443885793,
                             0.666120238846602,
                             0.264813203831783,
                             0.717007333314455,
                             0.95119232422312,
                             0.833669574933742,
                             0.450082932184122,
                             0.309570971522678,
                             0.732874401666482))

set2 <- data.frame(type = c(1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            1,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            2,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3,
                            3),
                   flowRate = c(24,
                                24,
                                24,
                                45,
                                45,
                                45,
                                58,
                                58,
                                58,
                                24,
                                24,
                                24,
                                45,
                                45,
                                45,
                                58,
                                58,
                                58,
                                24,
                                24,
                                24,
                                45,
                                45,
                                45,
                                58,
                                58,
                                58),
                   speed = c(0.489966876244169,
                             0.535542121502899,
                             0.265940150225231,
                             0.399521957817437,
                             0.0831661276630631,
                             0.302201301891001,
                             0.78194419406759,
                             0.202331797255324,
                             0.192182716686147,
                             0.163038660094618,
                             0.658020173938572,
                             0.735633308902771,
                             0.480982144690572,
                             0.749452781972296,
                             0.491759702396918,
                             0.459610541236644,
                             0.397660083986082,
                             0.939983924945833,
                             0.128956722185581,
                             0.998492083119223,
                             0.440514184126494,
                             0.242917958355044,
                             0.350643319960552,
                             0.02613674288471,
                             0.71625407018877,
                             0.589325978787179,
                             0.649116781211748))

Код:

#Standard error of the mean function
sem <- function(x) sd(x)/sqrt(length(x))

#Aggregate dataframes, mean and Standard Error
mean_set1 <- aggregate(set1, by=list(set1$flowRate, set1$speed), mean)
mean_set1 <- select(mean_set1, -Group.1, -Group.2)
mean_set1 <- arrange(mean_set1, type, flowRate)
sem_set1 <- aggregate(set1, by=list(set1$flowRate, set1$speed), sem)
sem_set1 <- as.data.frame(sem_set1)
sem_set1 <- cbind(mean_set1$type, mean_set1$flowRate, sem_set1$Group.2)
sem_set1 <- as.data.frame(sem_set1)


mean_set2 <- aggregate(set2, by=list(set2$flowRate, set2$speed), mean)
mean_set2 <- select(mean_set2, -Group.1, -Group.2)
mean_set2 <- arrange(mean_set2, type, flowRate)
sem_set2 <- aggregate(set2, by=list(set2$flowRate, set2$speed), sem)
sem_set2 <- as.data.frame(sem_set2)
sem_set2 <- cbind(mean_set2$type, mean_set2$flowRate, sem_set2$Group.2)
sem_set2 <- as.data.frame(sem_set2)



#Graph sets
set1_graph <- ggplot(mean_set1, aes(x=type, y=speed, fill=factor(flowRate)))+
  geom_bar(stat="identity",width=0.6, position="dodge", col="black")+
  scale_fill_discrete(name="Flow Rate")+
  xlab("type")+ylab("Speed")+
  geom_errorbar(aes(ymin= mean_set1$speed,ymax=mean_set1$speed+sem_set1$V3), width=0.2, position = position_dodge(0.6))

set2_graph <- ggplot(mean_set2, aes(x=type, y=speed, fill=factor(flowRate)))+
  geom_bar(stat="identity",width=0.6, position="dodge", col="black")+
  scale_fill_discrete(name="Speed")+
  xlab("type")+ylab("Flow Rate")+
  geom_errorbar(aes(ymin= mean_set2$speed,ymax=mean_set2$speed+sem_set2$V3), width=0.2, position = position_dodge(0.6))

#Grid.arrange and save image
png("image.png", width = 1000, height = 700)
grid.arrange(set1_graph, set2_graph,nrow=1, ncol=2)
dev.off()
...