没有轴,图例等的ggplot2图


139

我想使用生物导体的六边形(我可以这样做)来生成填充整个(png)显示区域的图-无轴,无标签,无背景,无螺母。


1
创建一个六边形图并在图像编辑器中裁剪它会更容易吗?
joran 2011年

3
尝试theme_void()
Brian D

Answers:


182

根据我在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())

当我保存它时,似乎在生成的.png边缘周围仍然有少量边距。也许其他人也知道如何删除该组件。

(历史记录:自ggplot2版本0.9.2起,opts已弃用。请改为使用theme()并替换theme_blank()element_blank()。)



评论顺带:在某些情况下,theme(axis.ticks=element_blank())不能正常工作,以及theme(axis.ticks.x=element_blank()),可能是一个暂时的错误的地方(我有我自己的主题设定,然后我试图重写:只axis.ticks.xaxis.ticks.y做的工作。)
PatrickT

106

回复:更改主题等选项(对于懒惰的人):

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())

59

当前答案不完整或效率低下。这(可能)是获得结果的最短方法(使用theme_void()

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

结果是:

在此处输入图片说明


如果您只想消除标签感兴趣,请labs(x="", y="")执行以下操作:

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + 
      labs(x="", y="")

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"))表示它不是100%无效
baptiste

labs(x =“”,y =“”)似乎没有删除轴,只是删除了标签。
miratrix

@miratrix对不起,我的错。更新。
luchonacho

5
@luchonacho使用labs(x="",y="")轴标题留有空间,因为实际上有标题,但它们没有符号。要删除轴标题和空格,最好使用+ theme(axis.title = element_blank())
Didzis Elferts

6
labs(x = NULL)xlab(NULL)其他方式。
PatrickT

42
'opts' is deprecated.

ggplot2 >= 0.9.2使用

p + theme(legend.position = "none") 

6
我知道您还没有编辑权限,但是如果发现我的其他ggplot2答案需要更新,则re:opts()可以建议编辑。我会收到通知,并且可以自己合并。
joran 2012年

3
xy <- data.frame(x=1:10, y=10:1)
plot <- ggplot(data = xy)+geom_point(aes(x = x, y = y))
plot
panel = grid.get("panel-3-3")

grid.newpage()
pushViewport(viewport(w=1, h=1, name="layout"))
pushViewport(viewport(w=1, h=1, name="panel-3-3"))
upViewport(1)
upViewport(1)
grid.draw(panel)

Error in UseMethod("grid.draw") : no applicable method for 'grid.draw' applied to an object of class "NULL"
RomanLuštrik2012年

grid.ls()显示视口和
grob

看来在我使用的其他版本的ggplot中,面板名称是不同的
amaurel 2012年

xy <-data.frame(x = 1:10,y = 10:1)图<-ggplot(data = xy)+ geom_point(aes(x = x,y = y))图面板= grid.get(“ panel-3-4“)grid.newpage()pushViewport(viewport(w = 1,h = 1,name =” layout“))pushViewport(viewport(w = 1,h = 1,name =” panel-3- 4“))upViewport(1)upViewport(1)grid.draw(panel)
amaurel 2012年

-1

这是您想要的吗?

 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")

删除了图例,但x和y轴以及背景网格仍然存在。
user1320487
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.