首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用小平面作图确定ylim时如何忽略一个因素

用小平面作图确定ylim时如何忽略一个因素
EN

Stack Overflow用户
提问于 2011-04-17 03:56:21
回答 2查看 279关注 0票数 0

在下面的(无意义的)示例中,我想同时绘制y1和y2曲线,但根据y1曲线确定ylim,忽略y2。

示例如下:

代码语言:javascript
复制
library(ggplot2)

curves <- data.frame(expand.grid(seq(-2,2,0.1), c(2,4), c(1,2)))
names(curves) <- c("x","p","c")

curves$y1 <- splat(function(x,p,c, ...) c * p * exp(- x^p))(curves)
curves$y2 <- splat(function(x,p,c, ...) c + x * p)(curves)
curves <- melt.data.frame(curves, id.vars=1:3)

ggplot(curves, aes(x, value, color = variable)) +
    geom_line() +
    facet_grid(p ~ c, scales="free_y")

我希望第一行有ylim(0,4),第二行有ylim(0,8)。有什么想法吗?最好是关于如何让ggplot确定正确的限制,而不是手动输入?

EN

回答 2

Stack Overflow用户

发布于 2011-04-17 07:02:59

下面的方法是可行的,尽管它看起来很笨拙。毫无疑问,您可以改进这一点。

我的解决方法是从data.frame中删除您不想包含在绘图中的值:

代码语言:javascript
复制
curves <- subset(curves, !(curves$p==2 & (curves$value>4 | curves$value<0)))
curves <- subset(curves, !(curves$p==4 & (curves$value>8 | curves$value<0)))

ggplot(curves, aes(x, value, color = variable)) +
        geom_line() +
        facet_grid(p ~ c, scales="free_y")

票数 2
EN

Stack Overflow用户

发布于 2011-04-17 08:31:15

如果您以下面这段冗长的代码结束

代码语言:javascript
复制
ylimits <- c(  floor(min(curves$value[curves$variable == "y1"])),
             ceiling(max(curves$value[curves$variable == "y1"])) )

ggplot(curves, aes(x, value, color = variable)) +
    geom_line() +
    facet_grid(p ~ c, scales = "free_y") +
    scale_y_continuous(breaks = ylimits[1]:ylimits[2]) +
    coord_cartesian(ylim = ylimits) 

你听好了,

Y轴缩放基于y1曲线(尽管不是基于4和8)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5689189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档