Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用ggplot2缩放次轴,第二个轴具有负值_R_Ggplot2 - Fatal编程技术网

R 如何使用ggplot2缩放次轴,第二个轴具有负值

R 如何使用ggplot2缩放次轴,第二个轴具有负值,r,ggplot2,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) a

绘制次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)"))
#输入要绘制的气候数据

月设置二次刻度不会改变您创建的第二行。您需要变换数据,然后通过执行变换的逆运算来绘制和调整次轴

对于下面的示例,我们希望从y限制0=>50到-5=>20。为此,我们使用
aveT=y/2-5
变换y轴值,以获得
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)"))

g这绝对是我想要的,谢谢!我想知道是否有办法将轴值(限制)从-5更改为25。在当前比例下,次轴上有一半的图形空间未使用。@M.Wein我更新了帖子,解释了如何做得更多。我将限制从-5设置为20,因为这是一个更简单的方法,并且它填充了更多的数据。您可以使用相同的逻辑将其更改为您想要的任何限制。谢谢!我想从数字上看它比把它和df联系起来更容易理解。