scale_y_continuous 从图中删除一张图
scale_y_continuous removes one graph from the plot
我敢肯定,对于 ggplot2 大师来说,这是一个非常简单的问题。
这是我的代码,每次都有绘图输出
x <- data.frame(date = seq(as.Date("2012-01-01"),as.Date("2012-12-31"),
by="week"), rain = sample(0:20,53,replace=T),
flow = sample(50:200,53,replace=T))
var1 <- "rain"
var2 <- "flow"
xVariable <- "date"
fnxVariable <- function(x){return(xVariable)}
fnvar1 <- function(x){return(var1)}
fnvar2 <- function(x){return(var2)}
x$var1scaled <- x[,var1] * (max(x[,var2])-min(x[,var2]))/max(x[,var1])
+ (min(x[,var2])-min(x[,var1],na.rm=T))
tickNumber <- 5
ylimits <- seq(floor(min(x[,var1])),ceiling(max(x[,var1])),
by = (ceiling(max(x[,var1])) - floor(min(x[,var1])))/tickNumber)
ylimits2 <- floor(ylimits * max(x[,var2])/max(x[,var1]) +
(min(x[,var2])-min(x[,var1],na.rm=T)))
g.bottom <- ggplot(x, aes_string(x = fnxVariable(""), y = fnvar2("")))
g.bottom <- g.bottom+geom_line()
g.bottom
g.bottom <- g.bottom+geom_bar(aes_string(y = "var1scaled"),stat="identity")
g.bottom
g.bottom <- g.bottom + scale_y_continuous(expand = c(0,0),
limits = c(min(x[,var2]),max(x[,var2])))
g.bottom
知道为什么会这样吗?我尝试阅读有关 expand 的 ggplot2 帮助,但无法弄明白。
PS :这是一个函数的摘录,因此 aes_string
复杂的使用。
如果您在 scale_y_continuous()
中使用 limits=
,则所有超出限制的数据都会被删除。您的条形图从 0 点开始,因此被删除,因为最小 y 值设置得更高。
您应该从 scale_y_continous()
中删除 limits=
并改用 coord_cartesian()
和 ylim=
。这将 "zoom" 您的绘图而不删除数据。
g.bottom + scale_y_continuous(expand = c(0,0))+
coord_cartesian(ylim=c(min(x[,var2]),max(x[,var2])))
我敢肯定,对于 ggplot2 大师来说,这是一个非常简单的问题。
这是我的代码,每次都有绘图输出
x <- data.frame(date = seq(as.Date("2012-01-01"),as.Date("2012-12-31"),
by="week"), rain = sample(0:20,53,replace=T),
flow = sample(50:200,53,replace=T))
var1 <- "rain"
var2 <- "flow"
xVariable <- "date"
fnxVariable <- function(x){return(xVariable)}
fnvar1 <- function(x){return(var1)}
fnvar2 <- function(x){return(var2)}
x$var1scaled <- x[,var1] * (max(x[,var2])-min(x[,var2]))/max(x[,var1])
+ (min(x[,var2])-min(x[,var1],na.rm=T))
tickNumber <- 5
ylimits <- seq(floor(min(x[,var1])),ceiling(max(x[,var1])),
by = (ceiling(max(x[,var1])) - floor(min(x[,var1])))/tickNumber)
ylimits2 <- floor(ylimits * max(x[,var2])/max(x[,var1]) +
(min(x[,var2])-min(x[,var1],na.rm=T)))
g.bottom <- ggplot(x, aes_string(x = fnxVariable(""), y = fnvar2("")))
g.bottom <- g.bottom+geom_line()
g.bottom
g.bottom <- g.bottom+geom_bar(aes_string(y = "var1scaled"),stat="identity")
g.bottom
g.bottom <- g.bottom + scale_y_continuous(expand = c(0,0),
limits = c(min(x[,var2]),max(x[,var2])))
g.bottom
知道为什么会这样吗?我尝试阅读有关 expand 的 ggplot2 帮助,但无法弄明白。
PS :这是一个函数的摘录,因此 aes_string
复杂的使用。
如果您在 scale_y_continuous()
中使用 limits=
,则所有超出限制的数据都会被删除。您的条形图从 0 点开始,因此被删除,因为最小 y 值设置得更高。
您应该从 scale_y_continous()
中删除 limits=
并改用 coord_cartesian()
和 ylim=
。这将 "zoom" 您的绘图而不删除数据。
g.bottom + scale_y_continuous(expand = c(0,0))+
coord_cartesian(ylim=c(min(x[,var2]),max(x[,var2])))