样本数据:

### Data
df <- data.frame(year = seq(as.Date("1998/1/1"), as.Date("2012/1/1"), "years"),
                 ton = sample(200:500, 15, replace = TRUE),
                 trend = sample(50:100, 15, replace = TRUE),
                 count = sample(100:200, 15, replace = TRUE))

### Load the needed libraries
library(ggplot2)
library(scales)
library(grid)
library(gridExtra)

### Make a plot
plot1 <- ggplot(data = df, aes(x = year, y = ton)) + geom_bar(stat = "identity") +
  scale_x_date(breaks = df$year, labels = date_format("%Y")) +
  theme_bw()

plot2 <- ggplot(data = df, aes(x = year, y = trend)) + geom_line() +
  geom_point(shape = 21, size = 4, fill = "white") +
  scale_x_date(breaks = df$year, labels = date_format("%Y")) +
  theme_bw()

我使用grid.arrange合并了两个图,这是语法:
grid.arrange(plot1, plot2, nrow = 2, top = "Sample data trend")

我尝试使用以下代码制作表(yearcount变量,但结果不好。
### Create new dataframe for the table
df1 <- data.frame(count = df$count,
                  row.names = df$year)
df1 <- as.data.frame(t(df1))

### Add table below the graph
tt <- ttheme_default(colhead=list(fg_params = list(parse=TRUE)))
tbl <- tableGrob(df1, rows=NULL, theme=tt)
grid.arrange(plot1, plot2, tbl,
             nrow = 3,
             as.table = TRUE)

上面语法的结果:
r - 在ggplot2中的图形下方添加一个值表-LMLPHP

问题:如何使其适合图形区域,以及如何使表格更靠近折线图,以便将空白最小化?如果有任何自定义方法?

谢谢你。

最佳答案

tt <- ttheme_default(colhead=list(fg_params = list(parse=TRUE)),
                     base_size = 10,
                     padding = unit(c(2, 4), "mm"))
tbl <- tableGrob(df1, rows=NULL, theme=tt)

png("E:/temp/test.png", width = 1000, height = 1000)
grid.arrange(plot1, plot2, tbl,
             nrow = 3, heights = c(2, 2, 0.5))
dev.off()

r - 在ggplot2中的图形下方添加一个值表-LMLPHP

关于r - 在ggplot2中的图形下方添加一个值表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41164675/

10-12 17:36
查看更多