我想在ggplot2图表的包装图例中每行添加一个标题。
这样的事情:
我用来生成传奇的代码:
library(ggplot2)
df <- data.frame(X=letters[1:6], Y=rnorm(6, mean=10, sd=1))
p <- ggplot(df, aes(x=X, y=Y, fill=X)) +
geom_bar(stat="identity") +
scale_fill_manual(
values=c('#a6cee3','#1f78b4','#b2df8a','#33a02c','#A94774','#941751','#FFD479','#BEAD01'),
name="",
labels=c("1", "2", "3", "4", '5', '6', '7', '8'),
guide=guide_legend(nrow=2, byrow=T, title='')
) +
theme(legend.position='bottom')
p
谢谢!
答案 0 :(得分:2)
添加theme(legend.position='bottom')
将图例移到底部。
使用guide_legend(nrow=2, byrow=T, title='Row 1\nRow 2'
使图例换行到2行,并在顶部添加“第1行”,然后在下面添加“第2行”。但是线条相当接近,所以如果你将legend.title=element_text(lineheight=unit(1.5, 'lines'))
添加到theme
会更好地隔离它们(抱歉,我不知道1.5是否是一个可以一直有效的值,或者你是否有手动选择它,这就是我所做的。)
这是一个(微不足道的)可重现的例子(顺便说一下喜欢这些颜色 - 必须将它们留作将来使用!):
library(ggplot2)
library(grid) # for `unit`
df <- data.frame(X=letters[1:6], Y=rnorm(6, mean=10, sd=1))
p <- ggplot(df, aes(x=X, y=Y, fill=X)) + geom_bar(stat="identity") +
scale_fill_manual(
values=c('#a6cee3','#1f78b4','#b2df8a','#33a02c','#A94774','#941751','#FFD479','#BEAD01'),
name="",
labels=c("1", "2", "3", "4", '5', '6', '7', '8'),
guide=guide_legend(nrow=2, byrow=T, title='Row 1\nRow 2')
) +
theme(
legend.position='bottom',
legend.title=element_text(lineheight=unit(1.5, 'lines'))
)
p