R 如何为次轴图形添加图例

R 如何为次轴图形添加图例,r,ggplot2,R,Ggplot2,我试图在下面的代码中为次轴添加图例 library(ggplot2) library(dplyr) library(reshape2) df = data.frame(period = seq(as.POSIXct("2017-01-01"),as.POSIXct("2017-12-01"), by = "month"), b = c(100, 110, 105, 200, 210, 190, 180, 170, 165, 175, 140, 145),

我试图在下面的代码中为次轴添加图例

library(ggplot2)
library(dplyr)
library(reshape2)

df = data.frame(period = seq(as.POSIXct("2017-01-01"),as.POSIXct("2017-12-01"), by = "month"), 
                b = c(100, 110, 105, 200, 210, 190, 180, 170, 165, 175, 140, 145),
                c = c(120, 130, 150, 170, 250, 160, 130, 120, 110, 130, 120, 170),
                d = c(1060, 1180, 1050, 2070, 2150, 1900, 1850, 1070, 1605, 1750, 1460, 1250)) %>% 
             mutate(period = factor(period))

df_bar = melt(df, id.vars = "period", measure.vars = c("b", "c", "d")) %>% filter(variable != "d")

df_line = df %>% select(period, d)

ggplot(data = df_bar, aes(x = period, y = value, fill = variable)) + 
 geom_bar(stat = "identity", position = "dodge") +
 theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
 theme(axis.text=element_text(size=9), 
 axis.title=element_text(size=14,face="bold")) +
 ylab("primary axis") +
 geom_line(data = df_line, aes(x = period, y = (d)/10, group = 1), inherit.aes = FALSE) + 
 geom_point(data = df_line, aes(x = period, y = (d)/10, group = 1), inherit.aes = FALSE) +
 scale_y_continuous(sec.axis = sec_axis(~.*10, name = "secondary axis"))


我也想为线条图创建一个图例。

您可以在
geom_line
调用中添加
linetype
内部
aes
,为线条创建一个单独的图例,然后将其图例移近
fill
图例

也见此

library(重塑2)
图书馆(tidyverse)
ggplot(数据=df_条,aes(x=周期,y=值,填充=变量))+
几何图形栏(stat=“identity”,position=“dodge”)+
主题(axis.text.x=元素\文本(角度=90,hjust=1))+
主题(
axis.text=元素\文本(大小=9),
axis.title=元素\文本(大小=14,面=“粗体”)
) +
ylab(“主轴”)+
geom_线(数据=df_线,aes(x=周期,y=(d)/10,组=1,线型=“我的线”),inherit.aes=FALSE)+
比例\线型\手动(空,值=1)+
geom_点(数据=df_线,aes(x=周期,y=(d)/10,组=1),inherit.aes=FALSE)+
比例y连续(秒轴=秒轴(~*10,name=“次轴”))+
主题(legend.background=element_rect(fill=“transparent”),
legend.box.background=元素(fill=“transparent”,color=NA),
legend.key=element_rect(fill=“transparent”),
图例.间距=单位(-1,“线”))

要获得同一图例中的点和线,我们可以将
color
映射到
aes
&使用
scale\u color\u手册

ggplot(数据=df_条,aes(x=周期,y=值,填充=变量))+
几何图形栏(stat=“identity”,position=“dodge”)+
主题(axis.text.x=元素\文本(角度=90,hjust=1))+
主题(
axis.text=元素\文本(大小=9),
axis.title=元素\文本(大小=14,面=“粗体”)
) +
ylab(“主轴”)+
geom_线(数据=df_线,aes(x=周期,y=(d)/10,组=1,color=“我的线”),inherit.aes=FALSE)+
比例\颜色\手动(空,值=“黑色”)+
geom_点(数据=df_线,aes(x=周期,y=(d)/10,组=1,color=“我的线”),inherit.aes=FALSE)+
比例y连续(秒轴=秒轴(~*10,name=“次轴”))+
主题(legend.background=element_rect(fill=“transparent”),
legend.box.background=元素(fill=“transparent”,color=NA),
legend.key=element_rect(fill=“transparent”),
图例.间距=单位(-1,“线”))


由(v0.2.0.9000)于2018年7月21日创建。

FYI,双Y轴不是一个好的实践,因此不建议使用@TCZhang我在为同一个项目搜索“如何添加次轴”时遇到了这个问题,但这是客户的要求,无法更改。谢谢,它工作得很好,您能否在图例中添加一个点,使其看起来更类似于图中的线和点?