gpt4 book ai didi

r - 如何用ggplot2缩放第二个轴,第二个轴有负值

转载 作者:行者123 更新时间:2023-12-05 04:02:11 28 4
gpt4 key购买 nike

当我绘制次要 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

最佳答案

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

对于以下示例,我们希望从 y 限制 0 => 50 到 -5 => 20。为此,我们将 y 轴值转换为 aveT = y/2 - 5 以获得 aveT 的新值。要转换原始 aveT 数据点,我们必须进行逆变换:y = (aveT + 5) * 2。所以代码应该是这样的:

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

enter image description here

关于r - 如何用ggplot2缩放第二个轴,第二个轴有负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54612136/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com