没有轴,传说等的ggplot2图

use*_*487 124 r ggplot2

我想使用bioconductor的hexbin(我可以做)来生成一个填充整个(png)显示区域的图 - 没有轴,没有标签,没有背景,没有nuthin'.

jor*_*ran 173

根据我在Chase的回答中的评论,您可以使用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())
Run Code Online (Sandbox Code Playgroud)

当我保存时,看起来在得到的.png的边缘周围仍然有一个小的余量.也许其他人知道如何删除该组件.

(历史注释:由于GGPLOT2版本0.9.2, opts.已被弃用,取而代之的使用theme()和更换theme_blank()element_blank().)


小智 101

Re:将opts更改为主题等(对于懒人):

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())
Run Code Online (Sandbox Code Playgroud)


luc*_*cho 47

目前的答案不完整或效率低下.这是(也许)实现结果的最短途径(使用theme_void():

data(diamonds) # Data example
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) +
      theme_void() + theme(legend.position="none")
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述


如果你对消除标签感兴趣,labs(x="", y="")那么诀窍是:

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + 
      labs(x="", y="")
Run Code Online (Sandbox Code Playgroud)

  • ``labs(x = NULL)``或``xlab(NULL)``是其他方法. (6认同)
  • @luchonacho使用`labs(x ="",y ="")`留下轴标题的空间,因为实际上有标题,它们只是没有标志.要删除轴标题和空间,最好使用`+ theme(axis.title = element_blank())` (4认同)

Jon*_*ein 40

'opts' is deprecated.
Run Code Online (Sandbox Code Playgroud)

ggplot2 >= 0.9.2使用中

p + theme(legend.position = "none") 
Run Code Online (Sandbox Code Playgroud)

  • 我知道你还没有编辑权限,但如果你发现我需要更新的其他ggplot2答案,请重新选择:opts()随时建议编辑.我会收到通知,可以自己加入. (6认同)

sym*_*ush 13

聚会迟到了,但可能会感兴趣......

labs我发现和规范的组合guides在许多情况下很有用:

你只需要一个网格和一个背景:

ggplot(diamonds, mapping = aes(x = clarity)) + 
  geom_bar(aes(fill = cut)) + 
  labs(x = NULL, y = NULL) + 
  guides(x = "none", y = "none")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您只想抑制一个或两个轴的刻度线标签:

ggplot(diamonds, mapping = aes(x = clarity)) + 
  geom_bar(aes(fill = cut)) + 
  guides(x = "none", y = "none")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Cha*_*ase 0

这是你想要的吗?

 p <- ggplot(myData, aes(foo, bar)) + geom_whateverGeomYouWant(more = options) +
 p + scale_x_continuous(expand=c(0,0)) + 
 scale_y_continuous(expand=c(0,0)) +
 opts(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)