R 使用geom_条形图移动注释_自定义创建的表格

R 使用geom_条形图移动注释_自定义创建的表格,r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,我试图寻找答案,但什么也找不到 我有一个绘图,希望在绘图本身中添加一个表。我能做到,但是桌子正好在中间。 如果x轴是离散的,则可以重新定位由注释_custom创建的表?如果是,怎么做 谢谢大家! 例如,我想重新定位此表 library(ggplot2) library(gridExtra) my.summary <- summary(chickwts$weight) my.table <- data.frame(ids = names(my.summary), nums = a

我试图寻找答案,但什么也找不到

我有一个绘图,希望在绘图本身中添加一个表。我能做到,但是桌子正好在中间。 如果x轴是离散的,则可以重新定位由注释_custom创建的表?如果是,怎么做

谢谢大家!

例如,我想重新定位此表

library(ggplot2)
library(gridExtra)

my.summary <- summary(chickwts$weight)
my.table   <- data.frame(ids = names(my.summary), nums = as.numeric(my.summary))
ggplot(chickwts, aes(feed, weight)) +
       geom_bar(stat = "identity")  +
       annotation_custom(tableGrob(my.table))
库(ggplot2)
图书馆(gridExtra)

my.summary可以在绘图区域内重新排列
ggplot2
中的自定义注释。这至少会将它们移出中心。也许这个解决方案对你来说已经足够了。我会试着调整一下。也可以将其放置在绘图区域之外

library(ggplot2)
library(gridExtra)

my.summary <- summary(chickwts$weight)
my.table   <- data.frame(ids = names(my.summary), nums = as.numeric(my.summary))
ggplot(chickwts, aes(feed, weight)) +
       geom_bar(stat = "identity")  +
       annotation_custom(tableGrob(my.table), xmin=5,xmax=6,ymin=300,ymax=1300)

请提供一个小的、可复制的数据示例。帮助你得到你想要的结果会容易得多。谢谢你的建议。因此,在这种情况下,x-min和x-max的数值是离散的,y-min和y-man的数值是连续的。但是,更改这些值不会移动正在使用的绘图上的表格:(更新了我的答案,包含了一个放置表格的解决方案(在绘图内部/外部,无所谓),而不管绘图类型。让我知道这是否是正确的方向。对于第二个选项,可能更容易使用
grid.arrange
例如,
grid.arrange(plt,my.tGrob,ncol=2)
。您可以使用
宽度
参数对间距进行更多的控制。这对于我的示例来说确实不太复杂。我选择了常规的
网格
包,因为如果需要,它还允许在绘图中放置。
网格。排列
在这里仅限于并排放置。太棒了。谢谢谢谢你的帮助。
library(ggplot2)
library(gridExtra)
library(grid)

# data
my.summary <- summary(chickwts$weight)
my.table   <- data.frame(ids = names(my.summary), nums = as.numeric(my.summary))

# plot items
my.tGrob <- tableGrob(my.table)
plt <- ggplot(chickwts, aes(feed, weight)) +
          geom_bar(stat = "identity")

# layout
vp.layout <- grid.layout(nrow=1, ncol=2, heights=unit(1, "null"),
  widths=unit(c(1,9), c("null","line")) )

# start drawing
grid.newpage()
pushViewport(viewport(layout=vp.layout, name="layout"))
# plot
pushViewport(viewport(layout.pos.row=1, layout.pos.col=1, name="plot"))
print(plt, newpage=FALSE)
upViewport()
# table
pushViewport(viewport(layout.pos.row=1, layout.pos.col=2, name="table"))
grid.draw(my.tGrob)
upViewport()

#dev.off()