2013-04-21 2 views
1

Я только что пришел в R из Excel и был в восторге от элегантности качества графики ggplot2. Поскольку они - разные инструменты, таким образом, есть другой способ делать вещи. Я должен тренировать свой мозг, чтобы думать в R (ggplot2).Как построить многоцветный в ggplot2?

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

State   Quarter 1 Quarter 2 Quarter 3 Total 
Connecticut  385   410   521   1,316 
Pennsylvania 545   416   598   1,559 
Delaware  506   515   731   1,752 
New Jersey  591   781   617   1,989 
Maryland  946   436   895   2,277 
Vermont   945   816   895   2,656 
New York  910   867   946   2,723 

Total   4,828  4,241  5,203  14,272 

Вопрос:

  1. Я могу построить каждый данные квартал к одному barplot, как построить все Четверти на одной и той же схеме?
  2. Это может быть довольно способ Excel, есть ли лучший способ представить эти данные в R?
+0

Как правило, вы хотите, чтобы ваши данные в длинном формате для ggplot2. Посмотрите на «расплав» из пакета 'reshape2'. –

ответ

1
df <- read.csv(text="State,Quarter1,Quarter2,Quarter3,Total 
Connecticut,385, 410, 521, 1316 
Pennsylvania, 545, 416, 598, 1559 
Delaware,506, 515, 731, 1752 
New Jersey,591, 781, 617, 1989 
Maryland,946, 436, 895, 2277 
Vermont, 945, 816, 895, 2656 
New York,910, 867, 946, 2723 
", header=T) 

library(reshape2) 

df <- melt(df, variable.name="Quarter") 

library(ggplot2) 

ggplot(df[df$Quarter != "Total",]) + 
geom_bar(aes(State, value, fill = Quarter), stat="identity") 

это создает следующую таблицу:

enter image description here

1

Как было предложено в комментариях, первые melt кадра данных:

require(reshape2) 
require(ggplot2) 

data = read.table(text=" 
State, Quarter1, Quarter2, Quarter3, Total 
Connecticut,  385,   410,   521,   1316 
Pennsylvania, 545,   416,   598,   1559 
Delaware,  506,   515,   731,   1752 
New Jersey,  591,   781,   617,   1989 
Maryland,  946,   436,   895,  2277 
Vermont,   945,   816,   895,   2656 
New York,  910,   867,   946,   2723 
Total,   4828,  4241,  5203,  14272",header=T,sep=',') 

data.new <- melt(head(data,-1)) 

Теперь для столбчатого участка:

ggplot(head(data.new,-1), aes(State,value,fill=variable)) + geom_bar(position="dodge") 

enter image description here

Для бок о бок барной стойкой:

ggplot(head(data.new,-1), aes(State,value,fill=variable)) + geom_bar() 

enter image description here

+0

Вам не кажется, что положить и общее (особенно в штабеле) совершенно бессмысленно .. ?? Конечная высота столбцов (здесь три) уже представляет собой общую сумму ... – Michele

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