ggplot2 сюжет без осей, легенд и т. д.

146

Я хочу использовать hexbin биокондуктора (что я могу сделать) для создания графика, который заполняет всю область отображения (png) - без осей, без меток, без фона, без нутина.

user1320487
источник
1
Не было бы проще создать график в шестнадцатеричном формате и обрезать его в редакторе изображений?
Joran
4
попробуйтеtheme_void()
Brian D

Ответы:

185

Согласно моему комментарию в ответе Чейза, вы можете удалить многое из этого, используя 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 все еще есть небольшой запас. Возможно, кто-то еще знает, как удалить даже этот компонент.

(Историческая справка: начиная с версии 0.9.2 ggplot2 optsустарела. Вместо этого используйте theme()и замените theme_blank()на element_blank().)

Joran
источник
1
Большое спасибо! Я также нашел похожее решение на groups.google.com/group/ggplot2/browse_thread/thread/…
user1320487 01
Попутный комментарий: в некоторых случаях theme(axis.ticks=element_blank())не работает так же хорошо, как theme(axis.ticks.x=element_blank()), возможно, временная ошибка где-то (у меня есть собственный набор тем, затем я пытаюсь переопределить: only axis.ticks.xи axis.ticks.yвыполнить свою работу.)
PatrickT
109

Re: изменение настроек на тему и т. Д. (Для ленивых):

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())
mbjoseph
источник
65

Текущие ответы либо неполны, либо неэффективны. Вот (возможно) кратчайший способ добиться результата (используя 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
Лаборатории (x = "", y = ""), похоже, не удаляют оси, а только метки.
miratrix
@miratrix извини, моя ошибка. Обновлено.
luchonacho
6
@luchonacho Использование labs(x="",y="")оставляет пространство для заголовков осей, потому что на самом деле заголовки есть, они просто без знаков. Чтобы удалить названия осей и пространство для них, лучше использовать+ theme(axis.title = element_blank())
Дидзис Эльфертс
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
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"
Roman Luštrik
grid.ls () отображает список объектов viewport и grob
amaurel
похоже, что в другой версии ggplot, в которой я использую имя панели, другое
amaurel
xy <- data.frame (x = 1: 10, y = 10: 1) plot <- ggplot (data = xy) + geom_point (aes (x = x, y = y)) plot panel = grid.get (" панель-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 (панель)
amaurel
0

Поздно на вечеринку, но может быть интересно ...

Я считаю, что комбинация labsи guidesспецификация полезны во многих случаях:

Вам нужны только сетка и фон:

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

введите описание изображения здесь

Вы хотите подавить метку галочки только на одной или обеих осях:

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

введите описание изображения здесь

символ
источник
0

Я не нашел здесь этого решения. Он удаляет все это с помощью пакета cowplot:

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)
Джон Т
источник
-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 01