The geom_density_ridges
几何从ggridges
包创建了山脊线,如果未指定带宽,它会尝试找到一个合理的值。然后它使用base
R message
报告该值的函数(参见https://twitter.com/ClausWilke/status/921363157553172480 https://twitter.com/ClausWilke/status/921363157553172480).
The base
R函数suppressMessages
函数旨在抑制此类消息。例如,此代码输出一条消息:
message('This is a message');
这段代码什么也没输出:
suppressMessages(message('This is a message'));
然而,由于某种原因,当将此 geom 添加到 ggplot 时,消息的抑制似乎被抑制了。下面的代码does仍然产生一条消息:
require('ggplot2');
require('ggridges');
suppressMessages(ggplot(Orange, aes(x=age,y=Tree)) + geom_density_ridges());
(具体来说, ”Picking joint bandwidth of 319
".)
为什么是这样?做ggplot
采取什么措施来确保无论用户的规格如何,消息都能通过?或者这实际上是明智的行为,只是我碰巧不知道?
生成 RMarkdown 报告时,chunk 选项message
可以设置为message=FALSE
,它会抑制渲染级别的所有消息。由于这是我的用例,我的问题就解决了。
正如克劳斯·威尔克(Claus Wilke)一样,ggridges
包,建议,您可以随时设置bandwidth
手动以避免消息(https://twitter.com/ClausWilke/status/921361195231215616 https://twitter.com/ClausWilke/status/921361195231215616).
But why不suppressMessages
首先压制该消息?
这是我碰巧不知道的预期行为吗?