Por que o ggplot não permite suprimir as mensagens geradas por seus geoms?
ogeom_density_ridges
geom doggridges
o pacote criou ridgelines e, se uma largura de banda não for especificada, ele tenta encontrar um valor razoável. Ele então usa obase
R message
para relatar esse valor (consultehttps://twitter.com/ClausWilke/status/921363157553172480)
obase
Função RsuppressMessages
A função foi projetada para suprimir essas mensagens. Por exemplo, este código gera uma mensagem:
message('This is a message');
E esse código não gera nada:
suppressMessages(message('This is a message'));
No entanto, por algum motivo, a supressão de mensagens parece, suprimida quando esse geom é adicionado a um ggplot. O código a seguirfaz ainda produz uma mensagem:
require('ggplot2');
require('ggridges');
suppressMessages(ggplot(Orange, aes(x=age,y=Tree)) + geom_density_ridges());
(Especificamente "Picking joint bandwidth of 319
".)
Por que é isso? Fazggplot
fazer algo para garantir que as mensagens sejam enviadas independentemente da especificação dos usuários? Ou esse comportamento é realmente sensato que eu simplesmente não conheço?
Ao gerar relatórios RMarkdown, a opção chunkmessage
pode ser definido comomessage=FALSE
, que suprime todas as mensagens no nível de renderização. E como esse é o meu caso de uso, meu problema está resolvido.
E como Claus Wilke, o autor doggridges
sugerido, você sempre pode definir obandwidth
manualmente para evitar a mensagem (https://twitter.com/ClausWilke/status/921361195231215616)
Masporque nãosuppressMessages
suprimir a mensagem em primeiro lugar?
É esse comportamento esperado que eu simplesmente não conheço?