Sample data:
### 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()
I combined both plots using the grid.arrange
, and here is the syntax:
grid.arrange(plot1, plot2, nrow = 2, top = "Sample data trend")
I tried the following code to make a table (the year
and count
variables, but the result is not good.
### 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)
The result of the above syntax:
Question: How can I make it fit in the graph area, and how to make the table closer to the line plot graph so that the white space will be minimized? And if there's any way to customize it?
Thank you.
See Question&Answers more detail:
os