【问题标题】:Bars not anchored at zero using gap.barplot条形图未使用 gap.barplot 锚定在零
【发布时间】:2017-05-14 05:30:37
【问题描述】:

我正在使用 plotrix 中的 gap.barplot() 函数,当某些值非常小时时我遇到了问题。从以下数据框开始:

test.df <- data.frame(
perc = c(2.5,7.5,12.5,17.5,22.5,27.5,32.5,37.5,42.5,47.5,52.5,57.5,62.5,67.5,72.5,77.5,82.5,87.5,92.5,97.5), 
count = c(143649,30872,17444,11333,7513,5257,3677,2795,1976,1530,1022,916,862,985,808,339,59,2,1,1)
)

如果我按如下方式创建间隙条形图:

library(plotrix)
gap.barplot(test.df$count, gap=c(38000,136000), xaxlab=test.df$perc, xtics=test.df$perc, ytics=c(0:30)*5000, col="white", las=1)

它看起来很好。

但是,如果我尝试使用以下代码将“计数”值除以 1000:

gap.barplot(test.df$count/1000, gap=c(38,136), xaxlab=test.df$perc, xtics=test.df$perc, ytics=c(0:30)*5, col="white", las=1)

条形图未锚定在 0。

所有大于 3000(或在新刻度上为 3)的“计数”值都指向下方,即使它们大于零。出于某种原因,这些条被固定在 3 而不是 0。有谁知道为什么会发生这种情况以及我能做些什么来解决它?

【问题讨论】:

    标签: r plotrix


    【解决方案1】:

    我刚刚调查了一下。看起来该问题已在较新版本的软件包中得到修复。当我使用 devtools pacakge 中的以下命令安装 plotrix 时,我能够生成正确的绘图。

    install_github("cran/plotrix")
    

    看起来好像底部水平切割是在代码更新之前使用以下代码设置的:

    botgap <- ifelse(gap[1] < 0, gap[1], xlim[1])
    

    最近更新为:

    botgap<-ylim[1]
    

    在您的示例中,我看到包计算 botgap=2.5(因此低于 2.5 的所有值都显示为负数)但您希望它为 0。我看不到一种方法可以覆盖 botgap 中的值软件包的早期版本,因此如果可能,您可能希望获取较新的版本。另一种选择是使用正确的代码创建一个由您定义的新函数。

    如果你想自己检查,可以在 R 控制台中使用 plotrix::gap.barplot 来查看你下载的函数,并将代码与 github here 上的较新版本进行比较。

    【讨论】:

      猜你喜欢
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      相关资源
      最近更新 更多