如何使用ggplot设置R中主轴和副轴的限制



有没有一种简单的方法可以将主轴的极限设置为806.0 - 808.0,而将次轴的极限设置成0 - 15?尝试在CCD_ 4中提供CCD_。

library(ggplot2)
set.seed(123)
FakeData <- data.frame(Date = seq(as.Date("2001-01-01"), 
to= as.Date("2001-12-31"), 
by="day"),
Elevation1 = runif(365, 806.8,807.8),
Elevation2 = runif(365, 806.2, 807.3),
FlowA = runif(365,8,15),
FlowB = runif(365,1,3))
#Scale factor
scalefactor <- max(FakeData$Elevation1, 
max(FakeData$Elevation2))/max(max(FakeData$FlowA),
max(FakeData$FlowB))
#Plot
ggplot(FakeData, aes(x = Date))+
geom_line(aes(y = Elevation1,group=1,color='Elevation1'),show.legend = T)+
geom_line(aes(y = Elevation2,group=1,color='Elevation2'),show.legend = T)+
geom_line(aes(y = FlowA*scalefactor, color = 'FlowA'))+
geom_line(aes(y = FlowB*scalefactor, color = 'FlowB'))+
scale_y_continuous(sec.axis = sec_axis(~./scalefactor, name = 'Flow A and Flow B'))

您正在做的事情会起作用,但您的缩放效果不佳。如果希望轴更好地对齐,则缩放需要在绘图上产生更相似的位置(次轴仍使用第一个轴的笛卡尔坐标(。极限不起作用,因为你的两个轴的极限本质上是相同的(y轴的顶部和底部(。如果您的目标只是保留806-808的文本,但不实际更改限制或当前绘制数据的位置,则可以使用breaks来实现这一点。可以为主y轴和次y轴设置breaks参数。

下面是一个更简单的缩放版本,让您开始使用。你可以使用它来更好地了解缩放是如何工作的,以及为什么你的缩放可能没有达到你想要的效果。您可能还需要将breaks =添加到ggplot代码中。

#Plot
ggplot(FakeData, aes(x = Date))+
geom_line(aes(y = Elevation1,group=1,color='Elevation1'),show.legend = T)+
geom_line(aes(y = Elevation2,group=1,color='Elevation2'),show.legend = T)+
geom_line(aes(y = (FlowA/5+806), color = 'FlowA'))+
geom_line(aes(y = (FlowB/5+806), color = 'FlowB'))+
scale_y_continuous(breaks = c(806,807,808),sec.axis = sec_axis(~(.-806)*5, name = 'Flow A and Flow B',breaks = c(0,5,10,15)))

最新更新