为了训练ggplot并提高我编写R函数的技能,我决定构建一系列函数来生成生存图,并提供各种附加功能.我设法为基本的生存情节建立了一个良好的工作功能,现在我正在接受额外的工作.我想做的一件事是在生存图之上叠加一个给定时间点风险数量的区域图.我希望它看起来像facet_gridggplot 的选项,但我没有设法用这个功能.我不希望两个图表绑定,就像我们可以做的那样grid.arrange,而是具有相同的x轴.
下面的代码生成了两个(简化的)图,我想将它们叠加在一起.我试图这样做facet_grid,但我不认为解决方案在于此
library(survival)
library(ggplot2)
data(lung)
s <- survfit(Surv(time, status) ~ 1, data = lung)
dat <- data.frame(time = c(0, s$time),
surv = c(1, s$surv),
nr = c(s$n, s$n.risk))
pl1 <- ggplot(dat, aes(time, surv)) + geom_step()
Run Code Online (Sandbox Code Playgroud)

pl2 <- ggplot(dat, aes(time, nr)) + geom_area()
Run Code Online (Sandbox Code Playgroud)

我正在尝试用ggplot2做一个情节,但我正在努力使用geom tile.当我第一次使用这个geom时,我仔细查看了Hadley的文档,但我仍然无法得到我想要的东西.我想调整瓷砖宽度和瓷砖高度.我找到了如何在文档中调整拼贴宽度,但我正在努力攀登高度.以下一个情节为出发点:
test <- data.frame(
x = rep(c(1,3,6),2),
y = rep(c(1,3), each = 3),
w = rep(c(.5,2,1), 2),
z = sample(rep(LETTERS[1:6])))
ggplot(test, aes(x=x, y=y, fill = z)) + geom_tile(aes(width = w))
Run Code Online (Sandbox Code Playgroud)

我现在也想调整瓷砖的高度.第一个'列'中的底部图块(在x = 1处)从0到1运行,第一列中的顶部图块从1到4运行.在第二列中我想让底部图块运行从0到3,顶部瓷砖从3到4.对于最后一列,我希望底部从0到1.5,顶部从1.5到4.我尝试了很多东西,例如:
test2 <- data.frame(
x = rep(c(1,3,6),2),
y = c(0, 0, 0, 1, 3, 1.5),
w = rep(c(.5,2,1), 2),
z = sample(rep(LETTERS[1:6])),
h = c(1, 3, 1.5, 3, 1, 2.5))
ggplot(test2, aes(x=x, y=y, fill = z)) + geom_tile(aes(width = w, heigth = h))
Run Code Online (Sandbox Code Playgroud)
但没有一个产生我正在寻找的情节.
任何帮助将不胜感激.提前致谢!