2017-01-11 40 views
0

我有兩個data.frame需要在單個網格中生成條形圖。我獲得了這些data.frame作爲基準R算法的結果。爲此,獲取兩個data.frame必須合併爲一個的繪圖數據。我已經在SO之前瞭解到此類問題的早期文章,並獲得自己的想法如何獲得條形圖。然而,我的結果陰謀是不可讀的,我認爲我的代碼需要做的事情。任何人都可以指出如何以更好的方式改善結果圖嗎?如何改進data.frame的結果棒圖?

重複性的數據:使用兩個cvs文件基準算法

:使用三個csv文件,以基準相同的算法

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) 
) 

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) 
) 

我以前bind_rows獲得單個數據。並且可能通過這種方式獲得條形圖:

library(dplyr) 
library(ggplot2) 

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

但我的代碼有一些問題,無法產生我想要的情節。爲了產生更多可讀的條形圖,也許我增加了我的輸入數據的規模,使繪圖很好地區分。我怎樣才能做到這一點?

這是所希望的描繪我想要實現:

enter image description here

我如何能提高獲得柱狀圖中的代碼?我怎樣才能達到我想要的酒吧情節?請任何想法嗎?在此先感謝:)

+1

說ggplot2代碼不會生成_anything_(它出錯)。在ggplot2上通過幾個教程是值得的。 – hrbrmstr

回答

4

您需要創建一個包含type的附加列,例如,

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

然後用fill

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

要匹配你的例子情節的theme繪製,theme_tufte看起來很好的匹配

library(ggthemes) 
g + theme_tufte() 

給你

enter image description here

+0

感謝您的善意幫助。我怎麼可能可以通過自定義來重命名'xlab','ylab'? – Dan

+1

'+ xlab(「XXX」)+ ylab(「YYY」)' – csgillespie

+0

@丹,你可以通過10秒的搜索找到它。 – Axeman