我一直试图制作一个看起来像这样(但更好)的图表
基于我在this discussion中使用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
制作了一个看起来像这样的情节
但是我的主管不喜欢它,因为我必须jitter
这些线条以便它们不重叠,因此可以看到每个患者发生了什么,从而得分/线条与y轴完全对齐。
所以我想知道是否有人有任何想法,我是如何使用Gmisc
包来做到这一点的,这使我看起来像transitionPlot
。
非常感谢您的帮助和时间。
感谢。
答案 0 :(得分:2)
使用您的样本df
数据,这里有一些非常低级别的绘图功能,可以重新创建您的样本图像。无论你喜欢
首先,确保pre在发布之前
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)")
导致