2016-07-29 3 views
0

Ich habe eine Menge Daten, die ich in einer speziellen Weise grafisch darstellen möchte. Aber ich weiß nicht, wie man das auf R. macht. Die Eingabe ist eine CSV-Datei, die mehrere Spalten enthält. Die Spalten, die ich darstellen möchte, sind A und D. A enthält Text- und D-Nummern. Der verwendete Text in Spalte A kann mehrmals vorkommen. Aber das spielt keine Rolle enter image description hereWie man ein Diagramm erstellt, das Objekte auf der y-Achse und die Nummer auf der x-Achse zeigt

Am Ende habe ich ein Grundstück zu bekommen, die die folgende demonstrieren soll:

enter image description here

Ich habe eigentlich keine Ahnung, wie dies plotten:

I habe es versucht: plot(data1$COLUMND,data1$COLUMNA,xlab = "COLUMND", ylab = "COLUMNA"); Aber das Ergebnis ist, dass der Text in Spalte A durch eine Zahl ersetzt wird. Also bekommt die Achse in diesem Fall das Label von 0-3. Ich habe auch versucht, das Label mit dem Label-Befehl zu ändern. Dies führte jedoch zu dem Problem, dass die Etiketten in einer Reihe waren. Aber die Daten in der Spalte sind nicht (in meinem obigen Beispiel sind sie, aber nicht in meinen realen Daten). Daher sollte R 0 durch den entsprechenden Text aus Spalte A ersetzen. Dazu habe ich die in Quick-R guide gezeigten Methoden verwendet, aber sie funktionieren nicht wie gewünscht und ersetzten die Einträge durch null.

Antwort

0

müssen Sie zwei Schritte tun.

1) Erstellen Sie eine Liste von Vektoren. Jeder Vektor ist nach einem eindeutigen Element der Spalte A benannt und enthält die entsprechenden Werte aus Spalte D.

2) Verwenden Sie die Funktion stripchart() mit dieser Liste.

Mein Code Ansatz:

## your data 
data <- data.frame(A = c("AAA", "AAB", "AAC", "AAA", "AAE", "AAC"), 
        B = rep(12.3), 
        C = rep(20160729), 
        D = c(100,80,10,0,5,20)) 

## empty list to fill in the following loop 
list <- list() 
## get the values in column D for every unique value in column A 
## an add it to the list 
for (i in unique(data$A)) list[[i]] <- data$D[data$A == i] 

## plot the list 
stripchart(list, 
      xlab = "Column D", ylab = "Column A", 
      pch = 16, col = "red") 

Das Ergebnis:

Stripchart

0

Haben Sie versucht, die axis-Funktion?

Beachten Sie, dass "AAD" nicht in den von Ihnen bereitgestellten Beispieldaten enthalten war. Wir haben R über die Werte in Spalte A sagen und wie wir wollen, dass sie zu bestellen:

data1 <- data.frame(A=c('AAA', 'AAB', 'AAC', 'AAA', 'AAE', 'AAC'), 
    D=c(100, 80, 10, 0, 5, 20)) 
data1$A <- factor(data1$A, levels=paste0('AA',LETTERS[1:5])) 

Jetzt können wir planen. Wir sagen R, die Y-Achse für jetzt auszulassen (unter Verwendung des yaxt Arguments); Wir werden sie später manuell hinzufügen.

Schließlich fügen wir die Y-Achsenbeschriftungen hinzu, indem wir die tatsächlichen Werte anstelle der Faktorstufen (d. H. Die Zahlen) verwenden.

axis(2, at=1:length(levels(data1$A)), labels=levels(data1$A), las=2) 
mtext("Column A", side=2, line=1, las=2, at=3.2) 

Output