【问题标题】:Changing ylim (axis limits) drops data falling outside range. How can this be prevented?更改 ylim(轴限制)会丢弃超出范围的数据。如何防止这种情况?
【发布时间】:2011-02-07 05:56:51
【问题描述】:
df <- data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1))
g=ggplot(data=df,aes(x=age,y=veg))
g=g+stat_summary(fun.y=mean,geom="point")

点反映了每个年龄的蔬菜的平均值,这是我在使用以下命令更改轴限制后所期望并希望保留的。

g=g+ylim(0.2,1)

不幸的是,使用上述命令更改轴限制会导致 veg==0 子集从数据中删除,从而产生

“警告消息:删除了 4 行包含缺失值的行 (stat_summary)”

这很糟糕,因为现在数据图(stat_summary mean)省略了 veg==0 点。如何防止这种情况?我只是想避免显示绘图的空白部分——从 0 到 0.2 的纵坐标,但不要从 stat_summary 计算中删除相关数据。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您可以通过指定坐标系来做到这一点:

    df <- data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1))
    g=ggplot(data=df,aes(x=age,y=veg))
    g=g+stat_summary(fun.y=mean,geom="point")
    g+coord_cartesian(ylim=c(0.2,1)) #do not use +ylim() here
    

    【讨论】:

    • 这让所有东西都以相同的比例呈现,这很好,并且避免了丢弃超出范围的值,这很好,但现在 y 轴标签只显示实际包含的范围值,我认为这是不可取的。不知道如何使轴反映整个绘图范围。
    • 有人知道为什么必须指定坐标系才能不丢弃值吗?为什么不将此作为默认设置?此处的示例可能不是最好的示例,但是如果您有几个值的较大误差线,并且希望将 y 轴的范围限制为显示一般模式,则此解决方案非常有效。如果我使用 ylim() 或 scale_y_continuous() 超出范围的误差线根本不会绘制。
    猜你喜欢
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2018-10-16
    • 2023-04-03
    相关资源
    最近更新 更多