r - 为什么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
解决方案
而不是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))
推荐阅读
- docker - 泊坞窗图像名称的各个部分的适当名称是什么?
- angular - 从服务创建后销毁组件实例
- python - ValueError:操作“cond_25/Shape”已被标记为不可获取
- xamarin.forms - 无法在发布模式下构建 Xamarin.iOS(调试正常)
- html - 当我更改下面/第一个网站的 div 的位置时,标题会移动
- python - 熊猫:连接多个列值一个在另一个之下
- javascript - 切换开/关扩展?无法读取未定义的属性“onClicked”?
- java - Websphere 服务器上不一致的 WAR 部署
- android - 看不到属性
- visual-studio-code - VSCode 默认设置选项卡不见了