我是R新手,更不用說ggplot了,所以我提前爲我的示例下面的任何問題表示歉意。聯合ggplot中的圖例位置
使用來自現有問題的示例,我試圖將代碼組合起來,將兩個單獨的ggplots組合起來。我想知道如何將最終情節的圖例移動到圖表上方。我嘗試將legend.postion更改爲單獨ggplots的「頂部」,但似乎不起作用。
(請注意,我已經離開了第二個y軸的創建中的示例代碼保持在最低限度的東西,我認爲是需要說明我的問題)
library(ggplot2)
library(gtable)
library(reshape2)
library(grid)
library(scales)
df.test <- data.frame(
x_cat = factor(c(1, 2, 3, 4)),
count = seq(1:4),
line1 = seq(from = 1, to = 4, length.out = 4),
line2 = seq(from = 0, to = 3, length.out = 4)
)
p1 <- ggplot(data = df.test , aes(x=x_cat, y=count)) +
geom_bar(stat="identity") +
xlab("X Label") +
ylab("Y Label 1") +
theme(panel.background = element_rect(colour = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "bottom")
g1 <- ggplotGrob(p1)
df.test2 <- melt(df.test[-2])
p2 <- ggplot(data = df.test2 , aes(x=x_cat, y=value, colour=variable)) +
geom_line(aes(group=variable)) +
ylab("Y Label 2") +
theme(panel.background = element_rect(fill = NA, colour = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "bottom")
g2 <- ggplotGrob(p2)
pp <- c(subset(g1$layout, name == "panel", se = t:r))
g <- gtable_add_grob(g1, g2$grobs[[which(g2$layout$name == "panel")]], pp$t, pp$l, pp$b, pp$l)
pp <- c(subset(g2$layout, name == "guide-box", se = t:r))
g <- gtable_add_grob(g, g2$grobs[[which(g2$layout$name == "guide-box")]], t=pp$t, l=pp$l, b=pp$b, r=pp$r)
grid.draw(g)
組合地塊是非平凡的。看看這裏的一些例子:https://www.stat.auckland.ac.nz/~paul/RGraphics/chapter3.html –
我已經成功地使用了這種方法:http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/ –
您可能也覺得這個網站也有幫助:http://r-statistics.co/ggplot2-cheatsheet.html#Change%20legend%20position – NajlaBioinfo