如何使用ggplot2在x轴上制作间隙

How to make gap in the x axis using ggplot2

我画了一个图来表示 OR 比率。但是,log(PTH) 的 OR 具有较大的 95CI。我可以在 20 到 30 之间设置 x 轴的间隙,使其他变量更明显吗?一些例子建议 gap_plot(),但我不知道如何将它与这种类型的图形结合起来。 我已经转换了PTH值,所以在解释方面很难改变它。如果您有其他方法可以做到这一点,请随时提出建议。我想让所有变量的值都可见。然而,这个 lof(PTH) 的值使得 Pol 很难从图中解释,尽管它很重要。

最好的, A.

library(gridExtra)
library(ggplot2)
Nezavisna<-c("Pol","Starost","Ca","P","log(PTH)","log(mg)","BrojZlezda","MIBI","Iskustvo","Pridruzena")
OR<-c(0.399,1.023,0.814,0.568,14.14,0.417,2.193,0.709,1.468,1.445)
LL<-c(0.174,0.996,0.277,0.122,4.969,0.197,1.019,0.339,0.754,0.702)
UL<-c(0.917,1.052,2.396,2.649,40.238,0.882,4.722,1.483,2.859,2.976)
istrazivanje<-data.frame(Nezavisna,OR,LL,UL)
istrazivanje
ggplot(istrazivanje, aes(y = Nezavisna, x = OR)) +geom_point(shape = 18, size = 5) +  geom_errorbarh(aes(xmin = LL, xmax = UL), height = 0.25) +  geom_vline(xintercept = 1, color = "red", linetype = "dashed", cex = 1, alpha = 0.5)

如果我理解正确你的问题,一个解决方案可能是 ggforce facet zoom function

示例代码:

library(gridExtra)
library(ggplot2)
library(ggforce)

ggplot(istrazivanje, aes(y = Nezavisna, x = OR)) +
  geom_point(shape = 18, size = 5) +  
  geom_errorbarh(aes(xmin = LL, xmax = UL), height = 0.25) +  
  geom_vline(xintercept = 1, 
             color = "red", 
             linetype = "dashed", 
             cex = 1, 
             alpha = 0.5)+
  facet_zoom(xlim = c(20, 30)) # use facet_zoom to zoom on x axis

剧情:

示例数据:

Nezavisna<-c("Pol","Starost","Ca","P","log(PTH)","log(mg)","BrojZlezda","MIBI","Iskustvo","Pridruzena")
    OR<-c(0.399,1.023,0.814,0.568,14.14,0.417,2.193,0.709,1.468,1.445)
    LL<-c(0.174,0.996,0.277,0.122,4.969,0.197,1.019,0.339,0.754,0.702)
    UL<-c(0.917,1.052,2.396,2.649,40.238,0.882,4.722,1.483,2.859,2.976)
    istrazivanje<-data.frame(Nezavisna,OR,LL,UL)
    istrazivanje

正如 stefan 在评论中提到的,您可以转换数据,但要使其可读,请将标签设置为正常值。

ggplot(istrazivanje, aes(y = Nezavisna, x = log2(OR))) +
  geom_point(shape = 18, size = 5) +
  geom_errorbarh(aes(xmin = log2(LL), xmax = log2(UL)), height = 0.25) +
  geom_vline(xintercept = log2(1), color = "red", linetype = "dashed", cex = 1, alpha = 0.5) +
  scale_x_continuous(breaks = log2(c(1, 10, 20, 30, 40)), labels =c(1, 10, 20, 30, 40))

编辑:或者因为您已经采用了 log(PTH),您可以执行 log10(PTH),这可以使您的 OR 值大致从 14 变为 6,然后您甚至不必转换图表的比例.