在绘图的空白区域中打印data.frame

时间:2013-01-14 21:01:16

标签: r plot

我希望将print(df.to.print)的输出打印在图表上。如果我可以将toplefttopright的位置放在调用“图例(...)”中,那将会很棒,但这只是一个奖励。

一些代码:

# A data.frame to play with
df.to.print <- structure(list(p.val = c(0.05, 0.1), self = c(0.0498, 0.0997), 
    H2007.REML = c(0, 0.01), H2007.ref = c(0, 0)), .Names = c("p.val", 
"self", "H2007.REML", "H2007.ref"), row.names = c(NA, -2L), class = "data.frame")

# A simple plot
plot(1)
text(1,1, df.to.print )
# All of the entries are overlapping

# I can insert newlines easily enough
plot(1)
text(1,1, paste(as.character(df.to.print), collapse='\n'))

# But that looses all of the nice formatting in the data.frame.
# Which is easy enough to get on the console with: 
print(df.to.print)

# Bonus points for 'topleft', 'topright', etc. like in legend().

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:9)

试试这个:

plot(1)
text(0.6,1, paste(capture.output(df.to.print), collapse='\n'), pos=4, family="monospace")

pos=4将文本放在指定坐标的右侧,并保留左对齐。尝试使用固定空间字体。

答案 1 :(得分:1)

我所知道的两个函数是 plotrix 包中的addtable2plot,它可以用于基础R图形,而grid.table来自< strong> gridExtra 包,可用于网格图形(即ggplot / lattice)。

至于我是如何找到它们的:我花了很多时间来回答关于SO的问题以便在R上变得更好,并且在这个过程中我发现“在R处变得更好”通常等同于“更好地在文档中找到答案“。

sos 包是一个好的开始。