2

如果我使用默认的 Rgraphics包,那么我可以使用交错的基线制作图。

这是使用 CPTtools 包的示例(可在 github 上找到)

library(devtools)
install_github("ralmond/CPTtools")
library(CPTtools)

margins <- data.frame (
     Trouble=c(Novice=.19,Semester1=.24,Semester2=.28,Semseter3=.20,Semester4=.09),
     NDK=c(Novice=.01,Semester1=.09,Semester2=.35,Semseter3=.41,Semester4=.14),
     Model=c(Novice=.19,Semester1=.28,Semester2=.31,Semseter3=.18,Semester4=.04)
    )
margins <- as.matrix(margins)
baseline <- apply(margins[1:2,],2,sum)
     
stackedBarplot(margins,offset=-baseline,
                 main="Marginal Distributions for NetPASS skills",
                 sub="Baseline at 2nd Semester level.",
                 col=hsv(223/360,.2,0.10*(5:1)+.5))

这将产生输出:

堆积条形图

关键是offset传递给barplot函数的参数。

由于各种原因,我正在尝试重写CPTtools使用 ggplot 的图形。我不知道如何调整堆叠条的位置。我最接近的是

library(tidyverse)
margins <- data.frame (
      Trouble=c(Novice=.19,Semester1=.24,Semester2=.28,Semseter3=.20,Semester4=.09),
      NDK=c(Novice=.01,Semester1=.09,Semester2=.35,Semseter3=.41,Semester4=.14),
      Model=c(Novice=.19,Semester1=.28,Semester2=.31,Semseter3=.18,Semester4=.04)
)
tibble::rownames_to_column(margins,var="Level") %>%
  tidyr::pivot_longer(-Level,
                      names_to="Attribute", values_to="probability") ->
  marg
marg %>% filter(Level=="Novice" | Level=="Semester1") %>%
  group_by(Attribute) %>% summarize(baseline=sum(probability)) ->
  bases

ggplot(marg,aes(Attribute,probability,fill=Level)) +
  geom_col(position=position_stack() +
  scale_fill_brewer(palette="Blues")
4

0 回答 0