在绘图中添加矩阵?

Sam*_*Sam 7 plot r

无论如何都要在剧情中添加一张桌子.假设我有以下情节:

curve(dnorm, -3, +4)
Run Code Online (Sandbox Code Playgroud)

现在我想在情节下面添加一个矩阵:

testMat <- matrix(1:20, ncol = 5)
Run Code Online (Sandbox Code Playgroud)

我的目标?我正在编写一个绘图函数,它不仅创建了一个绘图,而且还显示了一个矩阵,其中包含我在绘图下面感兴趣的信息.

请参阅附图了解我的意思.我非常感谢你的帮助.

在此输入图像描述

A5C*_*2T1 8

可能有更好的方法来做到这一点,但一种选择可能是使用"绘制"矩阵和数据框的一个包,如"gplots"包.

这是一个非常简单的示例(您可以自定义此示例,以便对最终布局进行更精细的控制).

# Some sample data
testMat <- matrix(1:20, ncol = 5)
testMatDF <- as.data.frame(testMat)
names(testMatDF) <- c("Hey there", "Column 2", 
                      "Some * Symbols", "And ^ More", 
                      "Final Column")
rownames(testMatDF) <- paste("Group", 1:4)

# Load the package
library(gplots)
# Set par for plotting a three-row plot
par(mfrow = c(3, 1))
curve(dnorm, -3, +4)
textplot(testMat)
textplot(testMatDF)
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

您还可以使用layout(),而不是par(mfrow...)如果你想获得更多的创意一点点与你的地块的位置.例如:

layout(matrix(c(1, 1, 2, 3, 3, 3), 
              2, 3, byrow = TRUE))
curve(dnorm, -3, +4)
textplot(testMat)
textplot(testMatDF)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Rol*_*and 7

plotrix提供功能addtable2plot.

帮助文件中的示例:

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

编辑: 将表放在新图中,将其放在图表下方.

library(plotrix)

layout(matrix(c(1,2), 2, 1, byrow = TRUE),
       widths=c(1,1), heights=c(2,1))


testdf<-data.frame(Before=c(10,7,5),During=c(8,6,2),After=c(5,3,4))
rownames(testdf)<-c("Red","Green","Blue")
barp(testdf,main="Test addtable2plot",ylab="Value",
     names.arg=colnames(testdf),col=2:4)

plot.new()
addtable2plot(0,0,testdf,bty="o",display.rownames=TRUE,hlines=TRUE,
              title="The table")
Run Code Online (Sandbox Code Playgroud)