没有轴、图例等的图

我想使用生物导体的己形文字(我可以做到)来生成一个填充整个(png)显示区域的图——没有轴,没有标签,没有背景,什么都没有。

210428 次浏览

这是你想要的吗?

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

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

看起来在结果的边缘还有一小块空白。当我保存这个的时候。也许还有其他人知道如何移除这个部件。

(历史记录: 自 Ggplot20.9.2版本以来,opts已被弃用。改为使用 theme(),并用 element_blank()替换 theme_blank()。)

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)
'opts' is deprecated.

ggplot2 >= 0.9.2中使用

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

回复: 改变选项为主题等(对懒人) :

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

目前的答案要么不完整,要么效率低下。以下(也许)是获得结果的最短途径(使用 theme_void():

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

结果是:

enter image description here


如果你只是对消除 标签感兴趣,那么 labs(x="", y="")可以做到这一点:

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

派对迟到了,不过可能有点意思。

我发现 labsguides规范的组合在许多情况下都很有用:

你想要的只是一个网格和背景:

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

enter image description here

您只希望禁止显示一个或两个轴的刻度标签:

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

enter image description here

我没有在这里找到这个解决方案,它使用牛仔图软件包删除了所有这些问题:

library(cowplot)


p + theme_nothing() +
theme(legend.position="none") +
scale_x_continuous(expand=c(0,0)) +
scale_y_continuous(expand=c(0,0)) +
labs(x = NULL, y = NULL)

注意到同样的事情也可以像这样使用 theme.void ()来完成:

p + theme_void() +
theme(legend.position="none") +
scale_x_continuous(expand=c(0,0)) +
scale_y_continuous(expand=c(0,0)) +
labs(x = NULL, y = NULL)

使用 ggeasy,它更简单。

library(ggeasy)
p + theme_classic()+easy_remove_axes() + easy_remove_legend()