底部的图例,两行包装在r中的ggplot2中 [英] Legend on bottom, two rows wrapped in ggplot2 in r

查看:180
本文介绍了底部的图例,两行包装在r中的ggplot2中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Rdates <- c("2007-01-31","2007-02-28","2007-03-30","2007-04-30","2007-05-31","2007-06-29","2007-07-31","2007-08-31","2007-09-28","2007-10-31")
Rdates <- as.Date(Rdates)
Cnames <- c("Column 1 Really Long","Column 2 Really Long","Column 3 Really Long","Column 4 Really Long","Column 5 Really Long","Column 6 Really Long","Column 7 Really Long","Column 8 Really Long","Column 9 Really Long","Column 10 Really Long")
MAINDF <- data.frame(replicate(10,runif(10,-0.03,0.03)))
rownames(MAINDF) <- Rdates
colnames(MAINDF) <- Cnames
CUSTOMpalette <- c("#1a2ffa", "#0d177d", "#1a9ffa", "#fa751a", "#4b8e12", "#6fd21b", "#fae51a", "#c3b104", "#f5df05", "#dcc805")
MAINDF[,"dates"] <- Rdates

MAINDF <- melt(MAINDF,id.vars="dates")

gg <- ggplot(MAINDF, aes(x = dates, y = value, fill = variable))
gg <- gg + geom_bar(stat = "identity")
gg <- gg + scale_x_date(breaks = "3 months", labels=date_format("%b%y"),limits=c(min(as.Date(MAINDF$dates)),max(as.Date(MAINDF$dates))))
gg <- gg + theme(
  axis.text.x= element_text(color="black",angle=45, size=10, vjust=0.5),
  axis.text.y= element_text(color="black", size=12, vjust=0.5),
  axis.title.y = element_text(color="black",size=12, vjust=0.5),
  plot.title = element_text(color="black",face="bold",size=14, hjust=0.5,vjust=1),
  panel.background = element_blank(),
  panel.border = element_rect(linetype = "solid", colour = "black",fill=NA),
  legend.position="bottom",
  legend.title = element_blank(),
  legend.key = element_rect(fill="white"), legend.background = element_rect(fill=NA)
)
gg <- gg + xlab("") + ylab("Monthly Returns") 
gg <- gg + ggtitle("Contribution by Strategy")
gg <- gg + scale_y_continuous(labels = percent_format())
gg <- gg + scale_fill_manual(values=CUSTOMpalette)
gg

目前有一个ggplot2堆积的条形图设置。现在一切正常,除非我遇到图例问题。我把它放在底部,但有10个项目,所以有些是截断(不适合)。我尝试了 guides(fill = guide_legend(nrow = 2)),但这会使标签按不同的顺序排列(我想获得前5个,然后是最后5个)。任何建议?

Currently have a ggplot2 stacked bar graph setup. Everything works properly now except I am having an issue with the legend. I have put it on the bottom but there are 10 items so some are cutoff (doesnt fit). I tried guides(fill=guide_legend(nrow=2)) but this puts the labels in a different order (I want to get the first 5 across then the last 5 below. Any suggestions?

推荐答案

您真的很接近,最后尝试这个:

You were really close. Try this at the very end:

gg+guides(fill=guide_legend(nrow=2,byrow=TRUE))

这篇关于底部的图例,两行包装在r中的ggplot2中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆