底部图例,两行用r中的ggplot2包裹 Rdates

底部图例,两行用r中的ggplot2包裹 Rdates,r,ggplot2,legend,R,Ggplot2,Legend,你真的很接近。请在最后尝试以下方法: 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 L

你真的很接近。请在最后尝试以下方法:

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

你真的很接近。请在最后尝试以下方法:

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

上述解决方案仅针对单一美学。在某些情况下,您可能希望将图例换行,而不是换列。对于子孙后代,这一点如下所示

gg+guides(fill=guide_legend(nrow=2,byrow=TRUE))
图例如下所示:

要使用行包装图例,我们指定
legend.box=“vertical”
。下面,我们还减少了紧凑性的裕度

library(ggplot2)

ggplot(diamonds, aes(x=carat, y=price, col=clarity, shape=cut)) +
  geom_point() +
  theme(legend.position="bottom")

上述解决方案仅针对单一美学。在某些情况下,您可能希望将图例换行,而不是换列。对于子孙后代,这一点如下所示

gg+guides(fill=guide_legend(nrow=2,byrow=TRUE))
图例如下所示:

要使用行包装图例,我们指定
legend.box=“vertical”
。下面,我们还减少了紧凑性的裕度

library(ggplot2)

ggplot(diamonds, aes(x=carat, y=price, col=clarity, shape=cut)) +
  geom_point() +
  theme(legend.position="bottom")

您能让您的示例重现吗?请阅读有关如何生成示例的信息。这会让其他人更容易帮助你。威尔,虽然这可能只是一个简单的问题,但我遗漏了一些东西。我将编写一个可复制的示例。编辑原始代码,希望这会有所帮助。我的问题是传奇人物被切断了。将其强制为2行会扭曲列显示顺序(只希望最后5行在前5行下方换行)。请让您的示例重现,好吗?请阅读有关如何生成列的信息。这会让其他人更容易帮助你。威尔,虽然这可能只是一个简单的问题,但我遗漏了一些东西。我将编写一个可复制的示例。编辑原始代码,希望这会有所帮助。我的问题是传奇人物被切断了。将其强制为2行会扭曲列的显示顺序(只希望最后5行在前5行下方换行)。啊哇,真不敢相信我没有发现这一点。谢谢你的回答,我的头撞在桌子上。
byrow=TRUE
应该是默认行为啊哇,真不敢相信我竟然没有发现。谢谢你的回答,我的头撞在桌子上。
byrow=TRUE
应该是默认的行为。嗨,我们有没有办法让清晰的图例超过切割的图例?谢谢大家!@MiaoCai是的,看看guide_图例的顺序参数,例如,嗨,有什么方法可以使图例的清晰度高于切割?谢谢大家!@MiaoCai Yes查看guide_图例的顺序参数,例如。