【问题标题】:Deleting text in a plot删除绘图中的文本
【发布时间】:2021-07-29 21:27:38
【问题描述】:

我正在使用来自library(plotrix)(版本:3.8-1)的绘图功能sizetree。这个函数有一个showcount 参数,允许括号中的一些计数显示在图上(见下图)。

但我想知道为什么当我使用showcount=FALSE 时,它们周围的计数和括号不会消失?有什么办法可以让它们消失吗?

h = "
sssss ooooooo ggggg tttt
a     1       1     0
a     2       1     1
b     1       1     0
b     1       2     0
c     2       1     0
c     3       2     1
d     1       1     0
d     1       1     0
e     1       1     0"
h = read.table(text=h,h=T)

library(plotrix)
plotrix::sizetree(h,showcount = FALSE)

【问题讨论】:

  • 看起来这可能已经在 plotrix 的 3.8.2 版本中修复了?

标签: r plot plotrix


【解决方案1】:

该函数似乎有一个错误。该函数以递归方式调用自身以添加每一列,但该函数忽略了将showcount 值传递给每个后续调用。这是“修补”该功能的一种方法。本质上,我们正在制作副本并更改一行代码。这个方法真的很脆弱,很容易被其他版本的包破坏,但这是用plotrix_3.7-8测试的。

sizetree <- plotrix::sizetree
environment(sizetree) <- globalenv()
# This "path" navigates the AST for the function to find the offending line of code
path <- c(8, 3, 5, 4, 2, 3, 2, 3, 2, 3, 8, 3, 5)
orig <- body(sizetree)[[path]]
orig
## Problem line, no showcount= parameter
# sizetree(nextx, right, top, right + 1, lastcenter = top - xfreq[bar]/2, 
#     showval = showval, stacklabels = stacklabels, firstcall = FALSE, 
#     col = newcol, border = border, base.cex = base.cex)
## fix it up
scall <- orig
scall$showcount <- quote(showcount)
body(sizetree)[[path]] <- scall

然后我们就可以运行了

sizetree(h,showcount = FALSE)

得到

【讨论】:

  • 我认为this question 完全符合您的上述答案。请问您是否可以考虑看看?
猜你喜欢
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
相关资源
最近更新 更多