Eu quero usar o hexbin do biocondutor (o que eu posso fazer) para gerar um gráfico que preencha toda a região de exibição (png) - sem eixos, sem rótulos, sem fundo, sem nada.
Não seria mais fácil criar um gráfico de hexbin e cortá-lo em um editor de imagens?
precisa
3
tentetheme_void()
Brian D
Respostas:
182
Conforme meu comentário na resposta de Chase, você pode remover muitas dessas coisas usando element_blank:
dat <- data.frame(x=runif(10),y=runif(10))
p <- ggplot(dat, aes(x=x, y=y))+
geom_point()+
scale_x_continuous(expand=c(0,0))+
scale_y_continuous(expand=c(0,0))
p + theme(axis.line=element_blank(),axis.text.x=element_blank(),
axis.text.y=element_blank(),axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),legend.position="none",
panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),plot.background=element_blank())
Parece que ainda há uma pequena margem em torno da borda do .png resultante quando eu salvo isso. Talvez alguém saiba como remover até esse componente.
(Nota histórica: Desde a versão 0.9.2 do ggplot2 , optsfoi preterido. Em vez disso, use theme()e substitua theme_blank()por element_blank().)
Comentário de passagem: Em alguns casos, theme(axis.ticks=element_blank())não funciona, bem como theme(axis.ticks.x=element_blank()), provavelmente, um lugar bug temporário (eu tenho o meu próprio conjunto tema, então eu tentar substituir: somente axis.ticks.xe axis.ticks.yfazer o trabalho.)
PatrickT
106
Re: mudar opta para o tema etc (para pessoas preguiçosas):
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none", panel.background = element_rect(fill="grey80"), plot.background = element_rect(fill="red"))sugere que ele não é 100% nulo
baptiste
Os laboratórios (x = "", y = "") não parecem remover os eixos, apenas os rótulos.
miratrix
@miratrix desculpe, meu erro. Atualizada.
Luchonacho
5
@luchonacho O uso de labs(x="",y="")folhas no espaço dos títulos dos eixos, porque na verdade existem títulos, eles são apenas sem sinais. Para remover os títulos dos eixos e o espaço para eles, é melhor usá-los.+ theme(axis.title = element_blank())
Sei que você ainda não tem privilégios de edição, mas se encontrar outras respostas minhas do ggplot2 que precisam ser atualizadas, re: opts () fique à vontade para sugerir uma edição. Receberei uma notificação e posso incorporá-la.
theme_void()
Respostas:
Conforme meu comentário na resposta de Chase, você pode remover muitas dessas coisas usando
element_blank
:Parece que ainda há uma pequena margem em torno da borda do .png resultante quando eu salvo isso. Talvez alguém saiba como remover até esse componente.
(Nota histórica: Desde a versão 0.9.2 do ggplot2 ,
opts
foi preterido. Em vez disso, usetheme()
e substituatheme_blank()
porelement_blank()
.)fonte
theme(axis.ticks=element_blank())
não funciona, bem comotheme(axis.ticks.x=element_blank())
, provavelmente, um lugar bug temporário (eu tenho o meu próprio conjunto tema, então eu tentar substituir: somenteaxis.ticks.x
eaxis.ticks.y
fazer o trabalho.)Re: mudar opta para o tema etc (para pessoas preguiçosas):
fonte
As respostas atuais são incompletas ou ineficientes. Aqui está (talvez) o caminho mais curto para alcançar o resultado (usando
theme_void()
:O resultado é:
Se você estiver interessado apenas em eliminar os rótulos ,
labs(x="", y="")
faça o truque:fonte
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none", panel.background = element_rect(fill="grey80"), plot.background = element_rect(fill="red"))
sugere que ele não é 100% nulolabs(x="",y="")
folhas no espaço dos títulos dos eixos, porque na verdade existem títulos, eles são apenas sem sinais. Para remover os títulos dos eixos e o espaço para eles, é melhor usá-los.+ theme(axis.title = element_blank())
labs(x = NULL)
ouxlab(NULL)
são outras maneiras.em
ggplot2 >= 0.9.2
usofonte
fonte
Error in UseMethod("grid.draw") : no applicable method for 'grid.draw' applied to an object of class "NULL"
Isso faz o que você quer?
fonte