Grafico a barre in pila in R

Ho esaminato le domande simili qui in merito ai lotti di barre impilate in R, ma non sto ancora avendo fortuna.

Ho creato il seguente frame di dati:

ABCDEFG 1 480 780 431 295 670 360 190 2 720 350 377 255 340 615 345 3 460 480 179 560 60 735 1260 4 220 240 876 789 820 100 75 

A: G rappresenta l’asse x e l’asse y è la durata (secondi). Come dovrei andare a impilare i seguenti dati in R?

Grazie mille in anticipo per il tuo tempo e il tuo aiuto.

Il set di dati:

 dat <- read.table(text = "ABCDEFG 1 480 780 431 295 670 360 190 2 720 350 377 255 340 615 345 3 460 480 179 560 60 735 1260 4 220 240 876 789 820 100 75", header = TRUE) 

Ora puoi convertire il frame di dati in una matrice e utilizzare la funzione barplot .

 barplot(as.matrix(dat)) 

inserisci la descrizione dell'immagine qui

Un approccio un po ‘diverso usando ggplot2:

 dat <- read.table(text = "ABCDEFG 1 480 780 431 295 670 360 190 2 720 350 377 255 340 615 345 3 460 480 179 560 60 735 1260 4 220 240 876 789 820 100 75", header = TRUE) library(reshape2) dat$row <- seq_len(nrow(dat)) dat2 <- melt(dat, id.vars = "row") library(ggplot2) ggplot(dat2, aes(x=variable, y=value, fill=row)) + geom_bar(stat="identity") + xlab("\nType") + ylab("Time\n") + guides(fill=FALSE) + theme_bw() 

questo da:

inserisci la descrizione dell'immagine qui

Quando si desidera includere una legenda, eliminare la linea guides(fill=FALSE) .

Ovviamente non sono un ottimo programmatore R, ma se volessi farlo con ggplot2:

 data<- rbind(c(480, 780, 431, 295, 670, 360, 190), c(720, 350, 377, 255, 340, 615, 345), c(460, 480, 179, 560, 60, 735, 1260), c(220, 240, 876, 789, 820, 100, 75)) a <- cbind(data[, 1], 1, c(1:4)) b <- cbind(data[, 2], 2, c(1:4)) c <- cbind(data[, 3], 3, c(1:4)) d <- cbind(data[, 4], 4, c(1:4)) e <- cbind(data[, 5], 5, c(1:4)) f <- cbind(data[, 6], 6, c(1:4)) g <- cbind(data[, 7], 7, c(1:4)) data <- as.data.frame(rbind(a, b, c, d, e, f, g)) colnames(data) <-c("Time", "Type", "Group") data$Type <- factor(data$Type, labels = c("A", "B", "C", "D", "E", "F", "G")) library(ggplot2) ggplot(data = data, aes(x = Type, y = Time, fill = Group)) + geom_bar(stat = "identity") + opts(legend.position = "none") 

inserisci la descrizione dell'immagine qui