我试图覆盖条形图(主轴)和折线(次级轴),但是我不断收到一个错误,我不知道如何解决。我尝试从其他问题中借鉴多个例子,但仍然没有得到所需的结果。
这是我的代码:
ggplot(data = MRIP, aes(x = Length_mm)) +
geom_bar(aes(y = Perc.of.Fish), stat="identity", width = 10, fill = "black") +
geom_line(aes(y = Landings), stat = "identity", size = 2, color = "red") +
scale_y_continuous(name = "Percentage", sec.axis = sec_axis (~./Landings, name = "Landings"))
如何解决此错误:“ f(...)中的错误:未找到对象'Landings'?
答案 0 :(得分:2)
尝试一下:
coef <- 4000
MRIP %>%
mutate(LandingsPlot=Landings/coef) %>%
ggplot(aes(x = Length_mm)) +
geom_col(aes(y = Perc.of.Fish), width = 10, fill = "black") +
geom_line(aes(y = LandingsPlot), size = 2, color = "red") +
scale_y_continuous(
name = "Percentage",
sec.axis = sec_axis (trans= ~.*coef, name = "Landings")
)
给予
为什么这样做?用于定义辅助轴的比例因子不能成为输入data.frame的一部分-因为如果是这样,它可能会在各行之间发生变化(如此处所示)。这意味着您对输入data.frame的每一行都有单独的标度。那没有道理。因此,您可以缩放次要变量以使其范围与主要变量相似。我选择了coef <- 4000
。确切的值无关紧要,只要有意义即可。
通过比例因子进行除以获得绘图值,在转换中需要将乘以乘以比例因子,以便在次级图像上获得正确的标签轴。
感谢您提供良好的MWE。但是,下次,为获得额外的分数,请在您的问题中而不是在评论中张贴dput()
的结果...
更新
为了在评论中回答OP的后续问题:传说与美学联系在一起。因此,要获得图例,请在aes()
中移动要标记的属性。然后,您可以使用适当的scale_<aesthetic>_<type>
定义和自定义图例。但是,值得注意的是,如果您写aes(colour="black")
,则"black"
只是一个字符串。它没有定义颜色。 (使用标准默认值,它实际上会显示为略带粉红色的红色,标记为“黑色”!)这可能会造成混淆,因此最好使用"a"
,{{1}之类的任意字符串}和"b"
(或"c"
和"Landings"
)。反正...
"Percentage"
给予