Построение категорийных столбцов в виде сумм на отдельной столбчатой ​​диаграмме - PullRequest
1 голос
/ 05 февраля 2020

Я хочу по существу воссоздать этот график, который я сделал в JMP, но с R. Значения получены из качественного набора данных, где группы видов являются записями в одном столбце. Я хотел бы нанести SpeciesGroup на ось X, но залить цвет по Силе, в составную полосу. Я думаю, что мне нужно изменить порядок данных, но не могу понять, как.

df<- data.frame(ID=c(1,2),
                policy=c("Policy A", "Policy B", "Policy C", "Policy D", 
                         "Policy E","Policy F" ),
                SpeciesGroup= c("ray", "ray", "mammal", "mammal", "fish", "reptile"),
                Stength=c("M", "V", "M", "P", "P", "M"),
                stringsAsFactors=FALSE)

До сих пор я пробовал:

ggplot(aes(x=factor(Group), fill = Regulatory_Strength)) +
  geom_bar(mapping = NULL, data = RFMO_Policies, stat = "count",
           position = "stack",  width = .7, binwidth = NULL,
           na.rm = FALSE, show.legend = TRUE, inherit.aes = TRUE )+
  labs(title="Policy Directives by Taxa",  x="Directive Type", y = "Count", size = 13 )+
  theme(plot.title = element_text(hjust=1))+
  theme_classic()+
  scale_fill_manual(values=c( "firebrick3","yellow1","dodgerblue1" ), 
                    labels= c("Mandatory","Partial", "Voluntary" ))+
  theme(axis.text.x=element_text(angle=45,hjust=1,vjust=1, size= 13))+
  guides(fill=guide_legend(title="Regulatory Strength"))

Ниже приведен график, который я сделал в JMP, который я хотел бы воспроизвести:

enter image description here

Спасибо за любую помощь, которую вы можете предложить !!

1 Ответ

2 голосов
/ 05 февраля 2020

Это то, что вы ищете?

library(ggplot2)
ggplot(df, aes(x = SpeciesGroup, fill =  Stength))+
  geom_bar(stat = "count")

enter image description here

Альтернативное использование geom_tile

На мой взгляд, поскольку ваши данные качественные значения, возможно, будет более целесообразно построить их, используя geom_tile:

library(dplyr)
All_val <- expand(df,SpeciesGroup, Stength)

library(ggplot2)
df %>% mutate(Val = Stength) %>%
    select(SpeciesGroup, Stength, Val) %>%
    full_join(., All_val) %>%
    ggplot(aes(x = SpeciesGroup, y = Stength, fill = Val))+
    geom_tile(color = "black")+
    scale_fill_discrete(na.value = "white")+
    geom_text(aes(label = Val))

enter image description here

...