在R中获取绘图边界

4

我的问题:如何找到绘图区域的边界?

我正在使用plotHR函数绘制来自cox回归的样条线。我进行了一些调整,可以在这里找到,并且密度图让我感到不舒服,因此我希望能够将其更改为简单的常规多边形,而无需使用第二个图。问题是,一旦中等大小发生变化,第二个图就需要重新定位。

现在我知道我可以使用plot_boundaries.y和plot_boundaries.x以及限制和添加xaxs/yaxs信息,但这似乎不是最直观的方法。有没有简单的方法可以获取我的绘图底部左侧x,y和顶部右侧x,y?

以下是如何使用plotHR的示例:

library(survival)

hmohiv<-read.table("http://www.ats.ucla.edu/stat/R/examples/asa/hmohiv.csv", sep=",", header = TRUE)

surv <- with(hmohiv, Surv(time, censor))
fit <- coxph(surv~ pspline(age), data=hmohiv)
par(xaxs="i", yaxs="i")
plotHR(fit, bty="l", ylim=c(.4, 5), y.ticks=c(.5, 1, 1.5, 2, 3, 4), xlim=c(25, 55))

2
请查看?par,特别是par("usr") - Ben Bolker
可能是获取plot()边界框值的重复问题。 - joran
@joran 为了日后其他人的利益,您能否澄清一下关于 plotHR() 边界的问题为什么是与 plot() 边界的问题重复?我对 plotHR 没有深入了解,但是我的 ggplot2 经验 让我不愿意假设绘图边界很容易获得。 :) - Iterator
1
@迭代器 我的想法很简单,就是在_base graphics_中找到绘图边界的方法是使用par("usr"),正如Ben所指出的那样;因此,基本图形中任何关于查找绘图区域边界的问题基本上都是相同的,并且无论特定的函数如何,都将有相同的答案。lattice和ggplot都使用网格图形,其工作方式略有不同。 - joran
谢谢,我只是没有考虑到par()... usr对于绘图边界来说并不是一个直观的选项,但我猜想背后一定有某种神圣的智慧 - 对于发布重复帖子表示抱歉,我想我在搜索时没有使用正确的关键词。 - Max Gordon
1
@MaxGordon 在 par 中的许多内容只有在你查阅了5-6次并学会了它们存在后才变得直观。不要担心重复;正是出于你提到的原因,保留几个重复项是很好的:并非每个人都以相同的方式搜索事物。 - joran
1个回答

3
如果您正在使用pkg:survival(或任何依赖于基本图形的绘图功能,例如现在可用于greg包中的plotHR函数),那么这应该可以工作:
plot(survfit(fit))
par("usr")
# [1]  0.0 62.4  0.0  1.0

"bottom-left" x-y点是par("usr")[c(1, 3)],而右上角是par("usr")[c(2, 4)]。感谢在Greg包中发布该函数。

谢谢。plotHR已经在我的问题中链接了,这是一种非常简洁而优雅的绘制样条曲线的方式。至少这是我目前找到的最好的方法。 - Max Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接