【问题标题】:scale_y_continuous removes one graph from the plotscale_y_continuous 从图中删除一张图
【发布时间】:2015-09-17 04:31:36
【问题描述】:

我敢肯定,对于 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

知道为什么会这样吗?我尝试阅读有关扩展的 ggplot2 帮助,但无法弄清楚。

PS : 这是一个函数的摘录,因此使用了aes_string 复杂的用法。

【问题讨论】:

    标签: r plot ggplot2 scale


    【解决方案1】:

    如果您在scale_y_continuous() 中使用limits=,则所有超出限制的数据都将被删除。您的条形图从 0 点开始,因此被移除,因为最小 y 值设置得更高。

    您应该从scale_y_continous() 中删除limits=,并改用coord_cartesian()ylim=。这将在不删除数据的情况下“缩放”您的绘图。

    g.bottom + scale_y_continuous(expand = c(0,0))+
          coord_cartesian(ylim=c(min(x[,var2]),max(x[,var2])))
    

    【讨论】:

    • 感谢您的回答。在那种特定情况下,您认为这些限制有什么价值?我有&gt; summary(x[,"var1scaled"]) Min. 1st Qu. Median Mean 3rd Qu. Max. 50.0 94.7 124.5 127.6 176.6 199.0&gt; summary(x[,var2]) Min. 1st Qu. Median Mean 3rd Qu. Max. 50.0 88.0 115.0 119.1 152.0 199.0,所以两组数据的限制应该完全相同,不是吗?
    • @Chapo 条总是从 0 开始,因此如果限制更高,它们会被删除。
    • OK 是有道理的。再次感谢。将验证答案,
    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多