3

我正在使用 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。有谁知道为什么会发生这种情况以及我能做些什么来解决它?

4

1 回答 1

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 上的较新版本进行比较

于 2016-12-30T18:29:37.953 回答