简体   繁体   中英

R: Two graphs (boxplot and barplot) sharing one X-Axis

I am trying to match two graphs in such a way that the two graphs are located vertically above each other sharing one x Axis

I already tried to use ggplot but didn't succeed. I did not manage to rewrite the commands barplot() and plot() to ggplot() in such a way that the graphs still come out right. I would be very grateful for any help!

That's the first plot: 单个图的图像

plot(as.factor(DauerK_mcpM$Kulturkategorie), 
     DauerK_mcpM$Electivity, 
     ylim = c(-1,1),  
     ylab="Elektivitätsindex", 
     col = DauerK_mcpM$Farbe, xaxt = "n", 
     main = "Elektivität Männchen mit Dauer")
abline(h = 0, lty = 2) 
x.labels <- gsub("^.*?)","",levels(as.factor(DauerK_mcpM$Kulturkategorie)))
breaks <- seq(1,length(x.labels), 1)
axis(1, labels = x.labels, at = breaks, las = 2, cex.axis = 1)
dev.off()

That's the second plot: 第二张图的图像

barplot(Dauer_pro_Kultur_prozentM, 
        beside = TRUE, 
        xaxt = "n", ylab="verbrachte Zeit [%]", 
        main = "Männchen", col = Dauer_pro_KulturW$Farbe)
x.labels <- gsub("^.*?)", "", levels(as.factor(Dauer_pro_KulturW$Kulturkategorie)))
length <- length(x.labels)*1.2
breaks <- seq(from = 0.7, to = length, 1.2)
axis(1, labels = x.labels, at = breaks, las = 2, cex.axis = 1)
dev.off()

This can be done in ggplot by adding an indicator column for the plot type and then faceting by that indicator:

library(tidyverse)

#create some data
set.seed(20181022)
data <- data.frame(x = letters[ceiling(runif(100, 0, 10))],
                   y = runif(100),
                   stringsAsFactors = FALSE)

#duplicate the data and add an indicator for the Plot Type
data <- data %>% 
  bind_rows(data) %>% 
  mutate(PlotType = rep(1:2, each = nrow(data)))

#Facet by the plot type and subset each geom
data %>% 
  ggplot(aes(x, y)) +
  facet_grid(PlotType~., scales = "free")+
  geom_boxplot(data = filter(data, PlotType == 1)) + 
  geom_bar(data = filter(data, PlotType == 2), stat = "identity")

由geom组成

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM