2016-07-17 3 views
0

я следующий набор данные показывает финансовый период, продукт и сумму сделок:ggplot2: цвет заливки geom_bar; как изменить к различной группировке данных

app$FISCAL_PERIOD <-c(201604,201604,201604,201605,201605,201605,201606,201606,201606,201607,201607,201607,201608,201608,201608,201609,201609,201610,201610,201611,201611) 

app$Product <- c("Product 1","Product 3","Other","Product 1","Product 3","Other","Product 1","Product 3","Other","Product 1","Product 3","Other","Product 1","Product 3","Other","Product 2","Product 3","Product 2","Product 3","Product 2","Product 3") 

app$sum_trans<-c(78,23410,1946,84,29532,417,16,30364,129,305,32386,584,424,20873,274,20,20929,470,19261,10,6131) 

Я изобразил это как увернулись гистограммы в ggplot2. Ggplot автоматически назначает цвета для каждого заполнения, чтобы каждый финансовый период отличался цветом.

ggplot(data = app, aes(x = Product, y = sum_trans, fill = as.factor(FISCAL_PERIOD))) + 
    geom_bar(stat="identity", position="dodge", colour="black") 

Plot drawn by ggplot code above

Что мне нужно, чтобы показать каждый продукт, имеющий такой же цвет и переменную заливки не влияющие на диаграмму. I.e. Я хотел бы, чтобы все данные 1 финансового периода были одним цветом, а все данные 3 финансового периода были другими.

ответ

0

Вы можете установить переменную заливки, как product как определяет цвет, который вы хотите, и указать дополнительную переменную группы как FISCAL_PERIOD так, что каждый столбик по-прежнему будет сегментирован по годам:

ggplot(data = app, aes(x = Product, y = sum_trans, fill = Product, group = FISCAL_PERIOD)) + 
    geom_bar(stat="identity", position="dodge", colour="black") 

enter image description here

+0

Это Удивительно, спасибо. Есть ли способ обозначить периоды каким-либо образом? на x asis? –

+0

Вы можете использовать 'geom_text()' для маркировки, но это сделает текст очень переполненным. Возможно, вам придется подумать о другом способе этого. Для маркировки добавьте 'geom_text (aes (label = FISCAL_PERIOD), position = position_dodge (width = 0.9), vjust = -0.25)' к вашему сюжету должен дать вам все годы на каждом баре. Отрегулируйте параметры соответственно. – Psidom

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