кластерный бар в R - PullRequest
       30

кластерный бар в R

1 голос
/ 17 апреля 2020

Я пытаюсь создать кластерную гистограмму для 3 различных типов данных об осадках. Я делал различные поиски, как это может быть сделано в R с подобным набором данных. Тем не менее, я не мог найти хорошую помощь. enter image description here

Это набор данных, который я сейчас использую. Я попытался добавить несколько geom_bar(), но это не сработало. См. Попытку ниже:

ggplot(ppSAcc,aes(x=date,y=as.numeric(Precipitation)))+geom_bar(stat="identity",aes(color="blue"),show.legend=FALSE,size=1)+
    geom_bar(ppMAcc,stat="identity",aes(x=date,y=as.numeric(Precipitation),color="purple"),show.legend = FALSE,size=1)+
    labs(title="Accumulated Solid Precipitation (Snow)",y="Precipitation (mm)")

Во второй попытке я попытался создать фрейм данных, который включает все три типа осадков.

data<-data.frame(date=ppSAcc$date,snow=ppSAcc$Precipitation,mixed=ppMAcc$Precipitation,rain=ppRAcc$Precipitation)

, который дал мне фрейм данных, показанный выше. Вот где я застрял. Я начал кодировать ggplot ggplot(data,aes(x=date)))+geom_bar(position = "dodge",stat = "identity"), но я не уверен, как написать код так, чтобы у меня было три столбца (снег, смешанный, дождь) для каждого года. Я не уверен, как установить aes() часть.

1 Ответ

1 голос
/ 17 апреля 2020

Вам нужно преобразовать ваш фрейм данных в более длинный формат, прежде чем отобразить его в ggplot2. Вы можете использовать функцию pivot_longer из tidyr:

library(tidyr)
library(dplyr)
library(ggplot2)
library(lubridate)

df %>% pivot_longer(-date, names_to = "var", values_to = "val") %>%
  ggplot(aes(x = ymd(date), y= val, fill = var))+
  geom_col(position = position_dodge())

Она отвечает на ваш вопрос?

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

...