在ggplot2中进行两个y轴转换

时间:2018-12-05 01:04:23

标签: r ggplot2 plot data-visualization

我知道,通常出于几个原因,它被低估了两个y轴,但这里有一个非常具体的原因,因为这两个基本上是相同的概念,需要并排绘制。 / p>

无论如何,我希望在这里做的事情类似于

scale_y_reverse(breaks=seq(0,1,.05),
                   sec.axis = sec_axis(~ 1-., name = "SecondAxis", breaks=seq(0,1,.05) ))

不幸的是,这似乎不起作用。我需要主轴在上升时从1变为零,第二个y轴在上升时从0变为1。 enter image description here

不幸的是,您似乎无法从上面的代码中看到上面的代码,该代码是作为解决方案in another thread提出的。

1 个答案:

答案 0 :(得分:1)

我无法复制您的问题。

更新:这似乎是ggplot2_3.1.0特有的问题(错误)。 GitHub上存在与3.1.0中sec_axis的意外行为有关的几个问题:sec_axis formula behaviour #2974Ticks misaligned for sec_axis with some scale transformations and data in 3.1.0 #2978

以下示例在ggplot2_3.0.0中可重现,但在ggplot2_3.1.0中失败。


这里是一个最小且可复制的示例,请您仔细检查一下是否适合您。

# Generate sample data
x <- seq(1, 4 * pi, length.out = 100)
y <- sin(x)^2

library(ggplot2)
ggplot(data.frame(x, y), aes(x, y)) +
    geom_point() +
    scale_y_reverse(
        breaks = seq(0, 1, 0.1),
        sec.axis = sec_axis(~ 1 - ., name = "SecondAxis", breaks = seq(0, 1, 0.1)))

enter image description here