2017-01-11 3 views
0

У меня есть два data.frame, которые необходимы для создания барного графика в одной сетке. Я получил эти data.frame в качестве результата теста алгоритма в R. Для этого, получая данные графика, где два data.frame должны быть объединены с одним. Я узнал ранее пост такого вопроса в SO и получаю собственное представление о том, как получить планку. Тем не менее, мой приведенный сюжет не очень хорошо читается, я думаю, что что-то нужно сделать в моем коде. Может ли кто-нибудь указать мне, как лучше улучшить приведенный сюжет лучше?Как улучшить приведенный штриховой график для data.frame?

воспроизводимые данные:

используя два cvs файла базового алгоритма:

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

используя три csv файл бенчмарка же алгоритму:

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

@Dan, вы можете найти это с 10-секундным поиском. – Axeman

Смежные вопросы