首页 > 解决方案 > 使用R增加ggplot中log x轴某些值之间的分辨率?

问题描述

在 R 中使用 ggplot,我想增加 x 轴上值 1 周围的值之间的距离,即在 0.8 和 1.2 之间。

set.seed(123)
library(ggplot2)

somedatasetx <- append(round(runif(100,0.2,10),2),round(runif(100,0.8,1.2),2))
somedatasety <- round(runif(200,0.2,10),2)
    ggplot(data=NULL, aes(x=somedatasetx, y=somedatasety)) +
    geom_point(color="red") +
    scale_x_log10(
    breaks=c(0.2,1,10),
    limits=c(0.2,11)
    )

在此处输入图像描述 我的价值观集中在这些限制附近。简而言之,有没有办法将 0.8 到 1.2 之间的距离扩大,以便可视化该区域的值?另一种说法是,我希望上图中从 0.8 到 1.2 的值范围从 0.5 到 5?显然,x 轴上的对数刻度由于此操作而受到影响。

编辑:也许有一种方法可以在 x 轴上结合连续和 log10 比例?比如说,在 0.2 到 1.2 之间连续,并且从那里及以上的 log10?如果我可以控制每个 x 轴上的比例,那可能就是解决方案。就是不知道有没有可能。

标签: rggplot2

解决方案


我认为ggforce是您的想法。这个怎么样?

library(ggplot2)
library(ggforce)

somedatasetx <- append(round(runif(100,0.2,10),2),round(runif(100,0.8,1.2),2))
somedatasety <- round(runif(200,0.2,10),2)
to_plot = data.frame( x = somedatasetx, y = somedatasety )

ggplot(data = to_plot, aes(x = x, y = y)) +
  geom_point(color = "red") +
  facet_zoom(xlim = c( 0.8, 1.2 ) )

在此处输入图像描述

这样,您可以在顶部面板中获得原始图,在底部面板中获得突出显示的区域。


推荐阅读