在R中向图表添加表格(对齐文本块)

13

我希望在R中的图表上添加一个小表格(例如作为图例)。我想到的是:

t <- wantedTableMethod(
  row("param1", "param2", "param3", "param4")
  , row(value11, value12, value13, cell(value14, adj=0))
  , row(value21, value22, value23, value24)
  , row(value31, value32, value33, cell(value34, adj=1))
  border = F
)
plot(1,1)
legend("topleft", t)

每一列的所有值都应该有相同的偏移量。在R中是否可能实现这样的操作,还是需要手动对齐每个值?


你在这里使用什么语言(或程序包)来创建对象“t”? - mnel
@mnel:我正在寻找命令/包。我的示例是用“虚构的R代码”编写的。据我所知,这些命令并不存在。我认为了解我计划做什么可能会有所帮助,... - R_User
2个回答

14

如果您真的不喜欢使用外部包,也可以在base R中实现这个版本:

plot(1, 1)
v = 1:9
legend(
  'topright', ncol = 4L, title = 'Table',
  legend = c(
    '', 'Row1', 'Row2', 'Row3',
    'Col1', v[1:3], 
    'Col2', v[4:6], 
    'Col3', v[7:9]
  )
)

显示一个简单绘图的输出,其中图例为一张标题为“Table”的3x3表格,行标签为“Row1”到“Row3”,列标签类似。

注意编码者,由于v将被强制转换为character,你需要小心浮点格式(使用sprintf函数),还有其他诸如text.col等功能可以帮助您更好地美化绘图。


这确实是问题的最佳解决方案,谢谢! - jangorecki
有什么想法可以在图例调用中添加 pt.bg=c("white","red","yellow","green"), bty="n", pch=22,但使其每行仅显示一次?只在左侧显示。 - jangorecki

14

plotrix 包有一个 addtable2plot 函数,您可以将一个 data.framematrix 传递给它。

使用帮助页面上的例子。

library(plotrix)
testdf<-data.frame(Before=c(10,7,5,9),During=c(8,6,2,5),After=c(5,3,4,3))
 rownames(testdf)<-c("Red","Green","Blue","Lightblue")
 barp(testdf,main="Test addtable2plot",ylab="Value",
  names.arg=colnames(testdf),col=2:5)
 # show most of the options
 addtable2plot(0.7 ,8,testdf,bty="o",display.rownames=TRUE,hlines=TRUE,
  vlines=TRUE,title="The table")

在此输入图片描述

它被设计成尽可能与 legend 相似地工作。


让我想要更仔细地研究 plotrix。非常棒的函数。 - Ari B. Friedman

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