我有这段代码可以创建下面的图
sec_axis_data <- mpg %>%
group_by(manufacturer) %>%
summarise(entries = n())
p <- ggplot(mpg, aes(x = manufacturer, fill = class == "compact")) +
geom_bar(position = "fill") +
scale_fill_manual(values = c('blue', 'red')) +
scale_y_continuous(sec.axis = sec_axis(~. * 50))
p
但是,我不确定如何使辅助轴数据正确显示为穿过绘图的线?例如,当我尝试:
p <- ggplot(mpg, aes(x = manufacturer, fill = class == "compact")) +
geom_bar(position = "fill") +
scale_fill_manual(values = c('blue', 'red')) +
scale_y_continuous(sec.axis = sec_axis(~. * 50)) +
geom_line(data = sec_axis_data, aes(x = manufacturer, y = entries))
p
...我收到错误。我认为该问题与 mpg 和 sec_axis_data 的数据长度不同有关,但我不确定如何解决此问题。
最佳答案
您已经非常接近解决方案了。
您需要添加 inherit.aes = FALSE
因为在您的第二个数据帧中找不到 fill
参数。
此外,要设置适当的值,您需要将“条目”值除以与在 sec.axis
函数中构建第二个轴相同的比率:
library(ggplot2)
ggplot(mpg, aes(x = manufacturer, fill = class == "compact")) +
geom_bar(position = "fill", alpha = 0.5) +
scale_fill_manual(values = c('blue', 'red')) +
scale_y_continuous(sec.axis = sec_axis(~. * 50, name = "Second axis")) +
geom_line(inherit.aes = FALSE, data = sec_axis_data,
aes(x = manufacturer, y = entries/50, group = 1), size = 2)
它能回答你的问题吗?
关于r - 将辅助轴添加到堆叠条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61243063/