Visualisieren Sie ein horizontales Box-Diagramm in R.


8

Ich habe einen solchen Datensatz. Die Daten wurden über einen Fragebogen gesammelt und ich werde eine explorative Datenanalyse durchführen.

windows <- c("yes", "no","yes","yes","no")
sql     <- c("no","yes","no","no","no")
excel  <- c("yes","yes","yes","no","yes")
salary <- c(100,200,300,400,500 )

test<- as.data.frame (cbind(windows,sql,excel,salary),stringsAsFactors=TRUE)
test[,"salary"] <- as.numeric(as.character(test[,"salary"] ))

Ich habe eine Ergebnisvariable (Gehalt) in meinem Datensatz und einige Eingabevariablen (Tools). Wie kann ich mir ein horizontales Box-Diagramm wie folgt vorstellen: Geben Sie hier die Bildbeschreibung ein

Antworten:


3

Beginnen wir mit der Erstellung eines gefälschten Datensatzes.

software = sample(c("Windows","Linux","Mac"), n=100, replace=T) 
salary = runif(n=100,min=1,max=100) 
test = data.frame(software, salary)

Dadurch sollte ein Datenrahmen erstellt werden test, der ungefähr so aussieht:

    software    salary
1    Windows 96.697217
2      Linux 29.770905
3    Windows 94.249612
4        Mac 71.188701
5      Linux 94.028326
6      Linux  7.482632
7        Mac 98.841689
8        Mac 81.152623
9    Windows 54.073761
10   Windows  1.707829

BEARBEITEN basierend auf Kommentar Beachten Sie, dass die Daten, wenn sie nicht bereits im obigen Format vorhanden sind, in dieses Format geändert werden können. Nehmen wir einen Datenrahmen, der in der ursprünglichen Frage bereitgestellt wurde, und nehmen wir an, dass der Datenrahmen aufgerufen wird raw_test.

    windows sql excel salary
1     yes  no   yes    100
2      no  yes  yes    200
3     yes  no   yes    300
4     yes  no    no    400
5      no  no   yes    500

Erstellen Sie nun mit der meltFunktion / Methode aus dem reshapePaket in Rzunächst den Datenrahmen test(der für das endgültige Plotten verwendet wird) wie folgt:

# use melt to convert from wide to long format 
test = melt(raw_test,id.vars=c("salary"))
# subset to only select where value is "yes"
test = subset(test, value == 'yes')
# replace column name from "variable" to "software" 
names(test)[2] = "software"   

Jetzt erhalten Sie einen Datenrahmen test, der wie folgt aussieht:

  salary software value
1     100  windows   yes
3     300  windows   yes
4     400  windows   yes
7     200      sql   yes
11    100    excel   yes
12    200    excel   yes
13    300    excel   yes
15    500    excel   yes

Nachdem Sie den Datensatz erstellt haben. Wir werden jetzt die Handlung erzeugen.

Erstellen Sie zunächst das Balkendiagramm auf der linken Seite basierend auf der Anzahl der Software, die die Nutzungsrate darstellt.

p1 <- ggplot(test, aes(factor(software))) + geom_bar() + coord_flip()

Erstellen Sie als Nächstes das Boxplot rechts.

p2 <- ggplot(test, aes(factor(software), salary)) + geom_boxplot() + coord_flip()

Zum Schluss platzieren Sie diese beiden Diagramme nebeneinander.

require('gridExtra')
grid.arrange(p1,p2,nrow=1)

Dies sollte eine Handlung wie folgt erstellen:

Im linken Bereich wird angezeigt, wie unterschiedliche Software verwendet wird, dargestellt durch Balkendiagramme, und im rechten Bereich wird die Verteilung der Gehälter angezeigt, gruppiert nach der verwendeten Software, dargestellt durch Box-Diagramme.


2

Sie müssen eine Spalte erstellen, die Software-Informationen enthält - nennen Sie sie beispielsweise Software, und die Gehaltsspalte enthält das entsprechende Gehalt, also so etwas wie

 Software   Salary
 Microsoft  100
 Microsoft  300
 Microsoft  400
 SQL        200

und so weiter ... dann können Sie mit dem folgenden Code zeichnen

p <- ggplot(test, aes(factor(software), salary))
p + geom_boxplot() + coord_flip()

Gut, aber wie kann ich eine Software-Spalte erstellen?
Hamideh

Das müssen Sie selbst erforschen. Ich bin nicht sicher, wie Ihr Datensatz aussieht - die Schmelzfunktion kann für Sie von Nutzen sein.
Lauren Goodwin

@LaurenGoodwin Meine Antwort auf diese Frage verwendet gridExtra, um ein Barplot und ein Boxplot nebeneinander zu zeichnen und die angeforderte Visualisierung zu erstellen.
Nitesh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.