0

我一直在尝试制作一个看起来像这样的图表(但更好)

基本流程图

基于我在使用包中的函数的讨论中发现的内容。transitionPlot()Gmisc

但是,我无法理解transition_matrix,我似乎也无法在单独的第三列中绘制不同的状态类。

我的数据基于手术后患者症状的改善。方框中的数字是每个“状态”手术前后的患者数量。请注意,这(LVAD)不是必需品。

该图的数据就是这个df,如下所示

dput(df)
structure(list(StudyID = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 
7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L), .Label = c("P1", "P2", "P3", 
"P4", "P5", "P6", "P7"), class = "factor"), MeasureTime = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Postoperative", 
"Preoperative"), class = "factor"), NYHA = c(3L, 3L, 3L, 3L, 
3L, 2L, 3L, 1L, 3L, 1L, 3L, 3L, 1L, 1L)), .Names = c("StudyID", 
"MeasureTime", "NYHA"), row.names = c(NA, -14L), class = "data.frame")

我做了一个ggplot2看起来像这样的情节

ggplot2 图像

但我的主管不喜欢它,因为我必须让jitter线条不重叠,这样人们就可以看到每个患者发生了什么,因此点/线与 y 轴不完全对齐.

所以我想知道是否有人有一个想法,我如何能够使用这个Gmisc包来做到这一点,使我看起来像是一个transitionPlot.

非常感谢您的帮助和时间。

谢谢。

4

1 回答 1

2

使用您的示例df数据,这里有一些非常低级的绘图功能,可以重新创建您的示例图像。应该可以随意定制

首先,确保 pre 出现在 post 之前

df$MeasureTime<-factor(df$MeasureTime, levels=c("Preoperative","Postoperative"))

然后定义一些绘图辅助函数

textrect<-function(x,y,text,width=.2) {
    rect(x-width, y-width, x+width, y+width)
    text(x,y,text)
}
connect<-function(x1,y1,x2,y2, width=.2) {
    segments(x1+width,y1,x2-width,y2)   
}

现在画出情节

plot.new()
par(mar=c(0,0,0,0))
plot.window(c(0,4), c(0,4))

with(unique(reshape(df, idvar="StudyID", timevar="MeasureTime", v.names="NYHA", direction="wide")[,-1]), 
    connect(2,NYHA.Preoperative,3,NYHA.Postoperative)
)
with(as.data.frame(with(df, table(NYHA, MeasureTime))), 
    textrect(as.numeric(MeasureTime)+1,as.numeric(as.character(NYHA)), Freq)
)

text(1, 1:3, c("I","II","III"))
text(1:3, 3.75, c("NYHA","Pre-Op","Post-Op"))
text(3.75, 2, "(LVAD)")

这导致

在此处输入图像描述

于 2014-10-16T00:51:26.653 回答