ggplot2 barplot处理1个异常值推动轴向上

时间:2012-06-12 10:13:31

标签: r ggplot2

  

可能重复:
  Using ggplot2, can I insert a break in the axis?

我正在使用以下ggplot2代码生成faces_grid条形图:

ggplot(plotobj, aes(as.factor(gm) , peaks, fill=rvalue)) +
  geom_bar(stat="identity") +
  facet_grid(rvalue ~ .,scales="free") + 
  opts(legend.position = "none")

其中给出了以下情节(第一个方面的屏幕截图): ggplot2 barplot axis issue

正如您所看到的,由于1个异常值,y轴被拉伸到相当高的值。我想做的是通过在2e + 05之前获得更多的滴答来创建更合理的缩放,然后只有1个滴答直接转向5e + 05。这样,缩放不再是线性的,但它可以显示其中一个类别存在一个巨大的峰值。

无论如何使用ggplot2这么简单吗?这样做有R技巧吗?如果可能的话,我不想使用像ylim这样的东西,只是不再显示顶部。

1 个答案:

答案 0 :(得分:2)

您可以在y轴上使用变换。未经测试,因为您没有提供可重复的示例。

ggplot(plotobj, aes(as.factor(gm) , peaks, fill=rvalue)) +
    geom_bar(stat="identity") + facet_grid(rvalue ~ .,scales="free") + 
    opts(legend.position = "none") + scale_y_log10()
ggplot(plotobj, aes(as.factor(gm) , peaks, fill=rvalue)) +
    geom_bar(stat="identity") + facet_grid(rvalue ~ .,scales="free") + 
    opts(legend.position = "none") + scale_y_sqrt()
ggplot(plotobj, aes(as.factor(gm) , peaks, fill=rvalue)) +
    geom_bar(stat="identity") + facet_grid(rvalue ~ .,scales="free") + 
    opts(legend.position = "none") + coord_trans(y = "log10")
ggplot(plotobj, aes(as.factor(gm) , peaks, fill=rvalue)) +
    geom_bar(stat="identity") + facet_grid(rvalue ~ .,scales="free") + 
    opts(legend.position = "none") + coord_trans(y = "sqrt")