首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用R中的Hmisc::xYplot旋转网格以绘制水平误差条

使用R中的Hmisc::xYplot旋转网格以绘制水平误差条
EN

Stack Overflow用户
提问于 2011-06-18 05:58:16
回答 1查看 902关注 0票数 3

我正在使用xYplot用误差条绘制回归结果。但是,xYplot只绘制水平错误条,而我需要垂直错误条。环顾四周寻找解决方案,我发现this thread上有人问了大致相同的问题。在一些消息之后,提出问题的用户说:“我刚刚发现,使用xYplot (Hmisc)和旋转网格视口(以及标签等)正好满足了我的需要”。

所以我查看了一下如何旋转网格,发现使用网格库和pushviewport等可以旋转网格。但是,我的代码不能正常工作。这是我到目前为止尝试过的:

代码语言:javascript
运行
复制
estimate=structure(list(coefi = c(-5.08608456607495, -4.17906898422091, 
-2.85696514398422, -3.06968196245069, -2.73660002514793, -1.0017403629931, 
-1.66291850690335, 0.431265159072978, -0.472895611533531, 0.845421348865878, 
-0.437434919008876, 0.269041451577909, -0.233066564595661, 0.0137190330621302, 
-2.94808159763314, 1.9166875739645), lower = c(-8.1895, -6.8485, 
-5.214125, -5.532875, -5.106625, -3.271625, -3.97375, -0.09773, 
-1.340625, 0.415125, -0.86615, 0.02665125, -0.5861, -2.079, -5.626625, 
0.8115125), upper = c(-2.11475, -1.611125, -0.5602375, -0.7309625, 
-0.3721375, 1.259875, 0.7167875, 0.9672875, 0.39035, 1.30025, 
-0.05634125, 0.5115, 0.07237875, 2.14275, -0.3653, 4.202625), 
x = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
16)), .Names = c("coefi", "lower", "upper", "x"), row.names = c("alpha.1.", 
"alpha.2.", "alpha.3.", "alpha.4.", "alpha.5.", "alpha.6.", "alpha.7.", 
"b.income", "b.democracy", "b.ginete", "b.educ", "b.patent", 
"b.fdi", "b.0", "mu.alpha", "sigma.alpha"), class = "data.frame")

legenda=c(as.character(seq(1970,2000,5)),"PIB_pc", "democ",  "legis", "educ", "patent", "FDI",  "b.0", "mu.ano", "var.ano" )

grid.newpage()
pushViewport(viewport(angle = 90, name = "VP"))
upViewport() 
xYplot(Cbind(coefi,lower, upper) ~x, data=estimate, , varwidth = TRUE, ylab="Betas",
xlab="Inclinação das Covariáveis com respectivos 95% intervalos de credibilidade \n N=409",
ylim=with(estimate,c(min(lower)-.5, max(upper)+.5)),  scales=list(cex=1.2, x = list(at=seq(1,16,     by=1), labels = legenda)) ,abline=c(list(h=0), lty="dotted", col= "grey69"), xlab.top="Adesão ao Tratado de Cooperação de Patentes, 1970-2000", draw.in = "VP")

我会感谢任何人的帮助。

更新:有评论指出代码是正确的。所以我在想,如果我不能传达我想要的东西,或者这是一个bug…所以我现在就发布一张代码输出的图像,你可以告诉我,你计算机中的代码输出是相同的还是不同的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-20 17:21:50

你必须直接在网格对象上调用print (在网格文档RShowDoc("grid", package="grid") -“将网格添加到网格”中有提到):

代码语言:javascript
运行
复制
require(grid)
grid.newpage()
pushViewport(viewport(angle = 90, name = "VP"))

print(
    xYplot(Cbind(coefi,lower, upper)~x, data=estimate, , varwidth = TRUE,
        ylab="Betas", xlab="Inclinaçao das Covariáveis com respectivos 95% intervalos de credibilidade \n N=409",
        ylim=with(estimate,c(min(lower)-.5, max(upper)+.5)),
        scales=list(cex=1.2, x = list(at=seq(1,16,by=1), labels = legenda)),
        abline=c(list(h=0), lty="dotted", col= "grey69"),
        xlab.top="Adesao ao Tratado de Cooperaçao de Patentes, 1970-2000",
        draw.in = "VP"
    ),
    newpage=FALSE
)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6392266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档