Как лучше всего построить этот набор данных в виде сгруппированной гистограммы, как показано ниже?

sample plot

Zone       Oct      Nov        Dec
   1  554370.8 687899.0  702890.80
   2 1072629.8 899767.6 1058627.17
   3  660052.9 689939.9  543796.50
   4  104881.2 114328.2   86620.23
-1
jmutua 22 Окт 2018 в 23:45

2 ответа

Лучший ответ

Вот более измененный набор данных.

zone   count month
1 1127071   Jan
2 1025269   Jan
3  196059   Jan
4   43535   Jan
1 1193999   Feb
2 1002110   Feb
3  156429   Feb
4   39396   Feb

Могу ли я построить count как y и month как x, но сгруппированные по zone?

Мне удалось написать это:

ggplot(statLs, aes(month, count, fill=zone, group=zone)) +
geom_bar(stat="identity", position = "stack")
scale_x_discrete(limits=c("Jan", "Feb")) +
scale_fill_manual(values=c("red", "orange", "yellow", "grey"))

Но это возвращает ошибку

Error: Continuous value supplied to discrete scale
0
jmutua 23 Окт 2018 в 09:19

Сначала соберите данные, а затем постройте с помощью ggplot2. Допустим, ваши исходные данные назывались df:

library(tidyverse)
df1 <- gather(df, Month, val, -Zone)

ggplot(df1, aes(x=Zone, y=val, fill = Month)) + 
geom_bar(stat="identity", position=position_dodge())

enter image description here

1
Joe 22 Окт 2018 в 22:08
52937533