如何使用ggplot2缩放辅助轴,第二轴具有负值

时间:2019-02-10 00:11:50

标签: r ggplot2

当我绘制次要y轴时,数据集中的负值下降到其他绘制的数据之下。我试图使两个数据集都从相同的基线开始,但具有不同的轴比例。

我曾尝试缩放数据,但是我无法实现我的目标。我对ggplot2软件包不是很有经验。通过显示的代码,我相信我正在以与降水相同的比例绘制温度数据。

# Enter climate data to be graphed
month <- month.abb[c(1,2,3,4,5,6,7,8,9,10,11,12)]
month <- ordered(month, month.abb)
aveT <- c(-2.7, -0.9, 3.1, 7.3, 11.9, 15.7, 20.2, 19.8, 14.4, 7.6, 1.2, -3.6)
precip <- c(46.2, 30.5, 23.9, 21.1, 41.1, 40.1, 26.7, 21.6, 24.6, 22.4, 36.6, 38.6)

#Set the dataframe
df <- data.frame(month, aveT, precip)

#Graph precipitation data as bar graph
g <- ggplot(df) 
g <- g + geom_bar(aes(x=month, y=precip), stat="identity", fill="blue", color="black") + theme_bw() + theme(panel.grid = element_blank())
g <- g + ylim(0, 50)

#Add Temperature data
g <- g + geom_line(aes(x=month, y=aveT, group=1), color="red", size=1.5)
g <- g + scale_y_continuous(sec.axis = sec_axis(~.*1, name = "Temperature (C)"))

结果是温度线图的负值低于降水量条形图值。我想让主轴从0到50,从轴从-5到25,但是从相同的位置开始。

resulting graph

1 个答案:

答案 0 :(得分:1)

设置辅助比例尺不会更改您创建的第二行。您需要先变换数据,然后通过逆变换来绘制和调整辅助轴。

对于下面的示例,我们希望将y的限制从0 => 50转到-5 =>20。为此,我们用aveT = y / 2 - 5变换y轴值以获取{ {1}}。要转换原始的aveT数据点,我们必须进行逆变换:aveT。因此,代码应如下所示:

y = (aveT + 5) * 2

enter image description here