2015-12-11 2 views
-4

Я R noob и пытаюсь выяснить, на что надеюсь, будет простой вопрос. Я пытаюсь создать гистограмму с данными ниже, где Moth находится на оси y, Visits (2014) и Visites (2015) - это гистограммы, а Trials (2014) и Trials (2015) - линейная диаграмма. Я понимаю, что это тривиальная задача в Excel, но я хотел бы понять, как это делается в R.Как создать гистограмму с R

Month ; Visits (2014) ; Visits (2015) ; Trials (2014) ; Trials (2015) 
Jan ; 675 ; 835 ; 31 ; 41 
Feb ; 620 ; 895 ; 30 ; 41 
Mar ; 713 ; 1,117 ; 33 ; 46 
Apr ; 634 ; 964 ; 29 ; 41 
May ; 617 ; 968 ; 30 ; 42 
Jun ; 626 ; 1,120 ; 30 ; 46 
Jul ; 668 ; 961 ; 31 ; 46 
Aug ; 650 ; 1,109 ; 32 ; 46 
Sep ; 744 ; 1,207 ; 33 ; 48 
Oct ; 792 ; 1,167 ; 34 ; 45 
Nov ; 710 ; 1,142 ; 32 ; 41 
Dec ; 746 ;  ; 30 ; 

Спасибо заранее!

+1

Seano314 - что вы пробовали до сих пор? Кроме того, можете ли вы поместить свои данные в формат, который можно легко загрузить в R, используя dput? – Nelson

+0

Попробуйте ggplot. http://docs.ggplot2.org/current/ –

ответ

1

Здесь ваши данные очищены и с накрашенными значений декабря 2015 года Once данные считывались в память с помощью R, функция dput() производит это для фрейма данных df.

structure(list(Month = structure(c(5L, 4L, 8L, 1L, 9L, 7L, 6L, 
2L, 12L, 11L, 10L, 3L, 5L, 4L, 8L, 1L, 9L, 7L, 6L, 2L, 12L, 11L, 
10L, 3L), .Label = c("Apr ", "Aug ", "Dec ", "Feb ", "Jan ", 
"Jul ", "Jun ", "Mar ", "May ", "Nov ", "Oct ", "Sep "), class = "factor"), 
    Year = c(2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 
    2015, 2015, 2015, 2015, 2014, 2014, 2014, 2014, 2014, 2014, 
    2014, 2014, 2014, 2014, 2014, 2014), Visits = c(835, 895, 
    1117, 964, 968, 1120, 961, 1109, 1207, 1167, 1142, 1000, 
    675, 620, 713, 634, 617, 626, 668, 650, 744, 792, 710, 746 
    ), Trials = c(41, 41, 46, 41, 42, 46, 46, 46, 48, 45, 41, 
    40, 31, 30, 33, 29, 30, 30, 31, 32, 33, 34, 32, 30)), .Names = c("Month", 
"Year", "Visits", "Trials"), row.names = c(NA, -24L), class = "data.frame") 

Следующим шагом было расплавление кадра данных в длинном формате, подходящем для построения графика.

library(reshape2) 
df.m <- melt(df, id.vars = c("Year", "Month"))   # put the data frame in long form 

Наконец, участок, который можно было бы сделать многими способами, но этот разрывает годы на две панели. Здесь изображено изображение сюжета.

library(ggplot2) 
ggplot(df.m, aes(x = Month, y = value, fill = variable)) + 
    geom_bar(stat = "identity", width = 0.7, position = "dodge") + 
    geom_text(aes(label = value), vjust = .4, position=position_dodge(width=0.8)) + 
    theme_bw() + 
    labs(x = "", y = "Number", title = "Two-Year Comparison of Visits and Trials") + 
    theme(axis.ticks= element_blank()) + 
    theme(plot.title = element_text(face = "bold", size = 11)) + 
    scale_y_continuous(label = NULL, expand = c(0, 0)) + 
    scale_fill_discrete(name="") + 
    theme(legend.position = "bottom") + 
    facet_wrap(~ Year) 

enter image description here

1

Во-первых, melt ваши данные

library(data.table) 

DT <- melt.data.table(DT) 

Затем с помощью ggplot2, сюжет легко сделать

library(ggplot2) 

ggplot(DT, aes(x = Month, y = X1)) + 
    stat_bin(aes(fill = X1)) 
Смежные вопросы