首页 > 解决方案 > 为什么ggplot会生成两个图例

问题描述

我是 R 新手,我需要在其中生成多条线图(带有双轴)。我不知道为什么 R 会使用下面的代码为我生成 2 个图例。谁能告诉我如何合并这两个传说,谢谢?

library(ggplot2)


loc=rep(1:3, times=6) #x-axis value

Cate=rep(c("Ali", "Ben", "Can", "Don", "Ele", "Fin"), each=3) #category

res=rnorm(18,5,1) #y-axis value

df1=data.frame(loc, res, Cate)

df1$Cate=factor(df1$Cate, levels=c("Ali","Ben","Can","Don","Ele","Fin"))

f=ggplot(data=df1, aes(x=loc, y=res, group=Cate, colour=Cate)) +
  geom_line(aes(linetype=Cate), size=1) +
  labs(title="My Title", x="X-Axis", y="Y-Axis") + 
  scale_y_continuous(n.breaks=8, sec.axis=sec_axis(~exp(.), name="Exp Y-Axis")) +
  scale_colour_discrete(labels=c(expression(paste(italic("Ali"))), expression(paste(italic("Ben"))),
                      expression(paste(italic("Can"))), expression(paste(italic("Don"))),
                      expression(paste(italic("Ele"))), expression(paste(italic("Fin"))))) +
  theme(panel.grid.major=element_blank(), panel.grid.minor=element_blank(), 
        panel.background=element_blank(), axis.line=element_line(color = "black"),
        legend.background=element_blank(), legend.key=element_rect(fill=NA))

f

标签: rggplot2

解决方案


而不是scale_colour_manual,使用theme

ggplot(data=df1, aes(x=loc, y=res, group = Cate, colour=Cate)) +
  geom_line(aes(linetype=Cate), size=1) +
  labs(title="My Title", x="X-Axis", y="Y-Axis") + 
  scale_y_continuous(n.breaks=8, sec.axis=sec_axis(~exp(.), name="Exp Y-Axis")) +
  theme(legend.text = element_text(face = "italic"))+
  theme(panel.grid.major=element_blank(), panel.grid.minor=element_blank(), 
        panel.background=element_blank(), axis.line=element_line(color = "black"),
        legend.background=element_blank(), legend.key=element_rect(fill=NA))

主题


推荐阅读