我正在为按国家/地区分组的公司绘制销售点图。所以我的代码是dotchart(sales, labels=company, groups=country, data=mydata). 我还创建了一个按国家/地区划分的平均销售额表。有没有办法将此表作为图例包含在点图中?
四个小时后......我偶然发现了一种使用包中的addtable2plot命令将表格信息添加到绘图的非常巧妙的方法plotrix。跟进 chl 的例子:
res <- matrix(nc=3, nr=4)
for (i in 1:4) res[i,] <- tapply(iris[,i], iris[,5], mean)
colnames(res) <- levels(iris[,5])
rownames(res) <- colnames(iris)[1:4]
library(plotrix)
dotchart(res, auto.key=list(position="top", column=3), xlab="Mean"); addtable2plot(3,15, res, cex=.8)
Run Code Online (Sandbox Code Playgroud)
这是我的看法grid(以及 Iris 数据集):
library(lattice)
library(grid)
library(gridExtra)
res <- matrix(nc=3, nr=4)
for (i in 1:4) res[i,] <- tapply(iris[,i], iris[,5], mean)
colnames(res) <- levels(iris[,5])
rownames(res) <- colnames(iris)[1:4]
dp <- dotplot(res, auto.key=list(position="top", column=3), xlab="Mean")
pdf("1.pdf", width=10, height=5)
grid.newpage()
pushViewport(viewport(layout=grid.layout(1, 2, widths=unit(c(5,4), "inches"))))
pushViewport(viewport(layout.pos.col=1, layout.pos.row=1))
print(dp, newpage=FALSE)
popViewport(1)
pushViewport(viewport(layout.pos.col=2, layout.pos.row=1, clip="on"))
grid.draw(tableGrob(head(iris), gp=gpar(fontsize=6, lwd=.5)))
popViewport()
dev.off()
Run Code Online (Sandbox Code Playgroud)

ggplot2Hadley Wickham 的 github 页面上提供了另一种解决方案,将 ggplot2 图表与其他图形输出混合。最后,在线帮助页面包含gridExtra::grid.arrange()其他示例。
为了在图中显示表格,我们可以修改代码如下:
grid.newpage()
pushViewport(viewport(layout=grid.layout(1, 1, widths=unit(c(5,4), "inches"))))
pushViewport(viewport(layout.pos.col=1, layout.pos.row=1))
print(dp, newpage=FALSE)
popViewport(1)
pushViewport(viewport(x=0.5, y=0.3, clip="off"))
grid.draw(tableGrob(head(iris), padding.v=unit(1, "mm"), padding.h=unit(1, "mm"),
gp=gpar(fontsize=6, lwd=.5)))
popViewport()
Run Code Online (Sandbox Code Playgroud)
这产生

theme=(调用时可以使用更改单元格的背景颜色tableGrob()。)
| 归档时间: |
|
| 查看次数: |
5489 次 |
| 最近记录: |