0

我正在尝试使用包Gmisc并在 R 中制作一个三列转换图,数据如下head(dat,10)

       ?.no X1 X2 X3
  1      2  S      
  2      6  E  E  E
  3     11  E      
  4     12  E      
  5     14  N      
  6     16  N      
  7     17  E  S   
  8     17  S  S   
  9     18  E      
  10    18  N 

它在第 2 列和第 3 列中都有空单元格。结果 dput(data)是:

structure(list(?.no = c(2L, 6L, 11L, 12L, 14L, 16L, 17L, 17L, 
18L, 18L, 19L, 19L, 21L, 21L, 22L, 25L, 28L, 29L, 58L, 62L, 63L, 
64L, 165L, 166L, 167L, 168L, 171L, 173L, 179L, 181L, 182L, 183L, 
184L, 185L, 188L, 196L, 197L, 198L, 199L, 211L, 213L, 215L, 218L, 
219L, 221L, 224L, 225L, 226L, 232L, 268L), X1 = c("S", "E", "E", 
"E", "N", "N", "E", "S", "E", "N", "E", "E", "E", "S", "N", "E", 
"E", "S", "E", "N", "E", "E", "N", "N", "N", "N", "S", "E", "E", 
"E", "E", "N", "E", "S", "E", "E", "N", "E", "S", "N", "E", "E", 
"E", "E", "N", "N", "E", "E", "E", "E"), X2 = c("", "E", "", 
"", "", "", "S", "S", "", "", "E", "", "", "", "E", "", "", "", 
"", "E", "E", "", "E", "", "", "E", "", "", "", "", "", "E", 
"N", "", "", "", "", "", "", "E", "", "", "E", "", "", "S", "", 
"", "", ""), X3 = c("", "E", "", "", "", "", "", "", "", "", 
"", "", "", "", "E", "", "", "", "", "E", "E", "", "E", "", "", 
"E", "", "", "", "", "", "", "N", "", "", "", "", "", "", "E", 
"", "", "E", "", "", "N", "", "", "", "")), .Names = c("?.no", 
"X1", "X2", "X3"), class = "data.frame", row.names = c(NA, -50L
))

转换图的代码:

library(Gmisc)
library(magrittr) 
clr<-c("darkblue","orange","darkgreen")
clr1<-c("grey","darkblue","orange","darkgreen")
transitions <- table(dat$X1,dat$X2)%>%
  getRefClass("Transition")$new(label=c("1st", "2nd"))
transitions$fill_clr[[1]] = clr;
transitions$fill_clr[[2]] = clr1;
table(dat$X2,dat$X3) %>% transitions$addTransitions(label = '3rd')
transitions$render()

输出:

过渡图

然后我有两个问题:

1 一些窄箭头无法显示。我的第一个转换矩阵table(dat$X1,dat$X2)是这样的:

        E  N  S
  E 23  4  1  1
  N  7  6  0  1
  S  6  0  0  1

但是从 N 到 S 和从 S 到 S 的箭头不见了。第三栏也是 table(dat$X2,dat$X2)

        E  N
    36  0  0
  E  2  8  0
  N  0  0  1
  S  2  0  1

2 所以因为有太多空值分散注意力(图中以灰色显示),我想删除空值,这意味着记录在下一阶段/列中没有任何类别。我对对所有三个阶段都有价值但仍希望保留原始数据集以显示比例的记录感兴趣。这个问题类似于 过渡状态图 R但我在第 2 列和第 3 列都有空值。

基本上,我所做的是从第二列和第三列中删除空值,通过使用与珍贵链接中提到的相同的方法,手动将 设置transitions$transitions为 0。但是删除后的数字结果是错误的 转换图,比较原图,蓝色和橙色的比例变了,很明显是因为我改了transitions$transitions

有没有其他方法可以在不改变的情况下删除空值transitions$transitions?只需删除某些框和链接到这些框的箭头?

当然我理解,空值可以被视为一个新的类别,我可以简单地保持原样,但是这些空值对我的研究问题没有意义,因此我希望得到它们。

希望我解释得很好,非常感谢

4

1 回答 1

0

这就是它的min_lwd用途:

transitions$min_lwd <- 0.01

我不确定我是否在您问题的第二部分关注您。图的大小与输入成正比。

于 2017-10-18T19:03:20.610 回答