2

可能重复:
使用ggplot2,我可以在轴中插入一个中断吗?

我正在使用以下 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条形图轴问题

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

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

4

1 回答 1

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")
于 2012-06-12T10:36:41.937 回答