2017-01-11 4 views
0

Ich habe zwei data.frame, die Balkendiagramm in einem Raster erzeugen musste. Ich habe diese data.frame als Ergebnis des Benchmarks des Algorithmus in R erhalten. Um dies zu tun, erhalte ich Plot-Daten, wo zwei data.frame zu einem zusammengefügt werden müssen. Ich habe früher Post von dieser Art von Frage in SO gelernt, und bekommen eigene Idee, wie man das Balkendiagramm erhält. Allerdings ist meine resultierende Handlung nicht gut lesbar, ich denke, dass etwas in meinem Code getan werden muss. Kann mir jemand aufzeigen, wie man die entstandene Handlung besser verbessern kann?Wie verbessert man das resultierende Balkendiagramm für data.frame?

reproduzierbare Daten:

mit zwei cvs Datei zu Benchmark-Algorithmus:

bnch_2 <- data.frame(
    test=c("s3","s7","s4" ,"s1" ,"s2" ,"s5" ,"s6" ,"s9","s8"), 
    replications=c(10,10, 10, 10 ,10 ,10 ,10 ,10 ,10), 
    elapsed=c(0.23, 0.28, 0.53 , 0.80 , 4.12 , 8.57 , 8.81 ,20.16 ,24.53), 
    relative=c(1.000 , 1.217 , 2.304 , 3.478 , 17.913 , 37.261 , 38.304 , 87.652 ,106.652), 
    user.self=c(0.23, 0.28 , 0.53 , 0.61 , 4.13 , 8.55 , 8.80 ,18.06 ,19.08), 
    sys.self=c(0.00, 0.00 ,0.00, 0.00 ,0.00, 0.00 ,0.00 ,0.13, 0.51) 
) 

mit drei csv Datei zum Benchmark gleichen Algorithmus:

bnch_3 <- data.frame(
    test=c("s3", "s7" ,"s4", "s1", "s5", "s6","s2", "s9","s8"), 
    replications=c(10,10, 10, 10 ,10 ,10 ,10 ,10 ,10), 
    elapsed=c(0.34 , 0.47 , 0.70 , 2.41 ,8.26 , 8.75 , 9.03, 28.78 ,36.56), 
    relative=c(1.000 , 1.382 , 2.059 , 7.088 , 24.294 , 25.735 , 26.559 ,84.647 ,107.529), 
    user.self=c(0.34 , 0.46 ,0.70 , 1.72 , 8.26 , 8.74 ,9.01, 26.24 ,30.95), 
    sys.self=c(0.00 ,0.00 ,0.00, 0.12, 0.00 ,0.00 ,0.00, 0.12 ,0.77) 
) 

I verwendeten bind_rows einzelne Daten zu erhalten. Rahmen und möglicherweise erhalten Bar-Diagramm auf diese Weise:

library(dplyr) 
library(ggplot2) 

DF <- bind_rows(bnch_2, bnch_3) 
ggplot(DF$elapsed, aes(factor(test))) + 
    geom_bar(stat="identity", position = "dodge") 

aber mein Code hat ein Problem und konnte meine gewünschte Handlung nicht erzeugen. Um ein besser lesbares Balkendiagramm zu erzeugen, vergrößere ich vielleicht die Skalierung meiner Eingabedaten, um die Handlung gut unterscheidbar zu machen. Wie kann ich das erreichen?

enter image description here

Wie kann ich den Code für das Erhalten Balkendiagramm verbessern:

Dies Plot ich erreichen möchte gewünscht? Wie kann ich mein gewünschtes Balkendiagramm erreichen? Irgendeine Idee bitte? Vielen Dank im Voraus :)

+1

Besagter ggplot2-Code erzeugt kein _anything_ (es ist fehlerhaft). Es wäre wohl die Zeit wert, ein paar Tutorials auf ggplot2 zu absolvieren. – hrbrmstr

Antwort

4

Sie müssen eine zusätzliche Spalte mit dem type, z.

DF = bind_rows(bnch_2, bnch_3, .id = "type") 
# or add in the column 
#DF$type = rep(c("A", "B"), each=9) 

Dann fill mit plotten

g = ggplot(DF, aes(factor(test), elapsed)) + 
    geom_col(aes(fill = type), position = "dodge") 

Um die theme Ihrem Beispiel Grundstück passen, sieht theme_tufte ein gutes Spiel

library(ggthemes) 
g + theme_tufte() 

Um Sie

enter image description here

+0

Danke für Ihre freundliche Hilfe. Wie kann ich das 'xlab',' ylab' möglicherweise umbenennen? – Dan

+1

'+ xlab (" XXX ") + ylab (" YYY ")' – csgillespie

+0

@Dan, Sie könnten das mit einer 10 Sekunden Suche finden. – Axeman

Verwandte Themen