我正在绘制按国家/地区分组的公司的销售点图。所以我的代码是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)
最佳答案
这是我的看法grid
(和虹膜数据集):
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()
Hadley Wickham的github页面Mixing ggplot2 graphs with other graphical output上提供了另一个仅使用
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()
产生
(调用
theme=
时,可以使用tableGrob()
更改单元格的背景颜色。)