2016-11-03 4 views
0

Я в настоящее время создает участки с ggplot2 для латексной документа и обнаружил, что ggplot2 добавляет много ненужных полей:Как удалить поля в ggplot2 диаграмме

enter image description here

  • окрашены в красный цвет от plot.background=element_rect(fill="red"):
    • небольшой край слева
    • небольшой край между изображением и легендой
  • окрашены фиолетовый с фотошопе:
    • края слева и справа
    • 1px маржинальной на нижней

Какие еще правила необходимы, чтобы удалить эти поля ? Это очень сложно для всех этих параметров конфигурации. Это мой фактический график:

library(ggplot2) 
library(scales) 
label <- c("A", "B", "C", "D") 
value <- c(61, 26, 9, 4) 
values <- data.frame(label, value) 
myplot <- ggplot(values, aes(x = "", y=value, fill=label)) 
myplot <- myplot + theme(legend.position="bottom") 
myplot <- myplot + labs(fill="") 
myplot <- myplot + geom_bar(stat="identity", width=1) 
myplot <- myplot + geom_text(
    aes(x=1.3, y=value/2+c(0, cumsum(value)[-length(value)])), 
    label=percent(value/100), 
    size=2 
) 
myplot <- myplot + coord_polar(theta="y") 
myplot <- myplot + theme(plot.background=element_rect(fill="red")) 
myplot <- myplot + theme(
    plot.margin=unit(c(0,0,0,0), "mm"), 
    legend.margin=unit(0, "mm"), 
    axis.title=element_blank(), 
    axis.ticks=element_blank() 
) 
ggsave("pie.pdf") 
+0

Dupe? [Удалить границы полей в 'ggplot2'] (http://stackoverflow.com/a/17791455/903061) говорит, что' labs (x = NULL, y = NULL) 'также требуется. – Gregor

+0

Однако это действительно не помогает, по крайней мере, не с красным цветом. – Gregor

+0

Почему вы просто не удаляете '' myplot <- myplot + theme (plot.background = element_rect (fill = "red")) ''? –

ответ

1

Вы можете удалить остальную часть пространства оси с помощью элементов темы axis.text и axis.tick.length.

Таким образом, вы бы добавить что-то вроде следующего к вашему theme код:

axis.text = element_blank(), axis.ticks.length = unit(0, "mm") 

В текущей версии развития ggplot2, ggplot2_2.1.0.9001, есть новая тема элемент legend.box.spacing, который мог также полезно здесь, чтобы удалить все пространство между легендой и сюжетом: legend.box.spacing = unit(0, "mm").

+0

'axis.text' и' axis.ticks.length' решили проблему –

0

Отрегулируйте plot.margin настройки так, чтобы нижняя и левая сторона отрицательные числа.

plot.margin=unit(c(0,0,-12,-5), "mm")

Если избавиться от края на дне, вы также жертвуя легенду.

+0

Проблема с этими жестко закодированными значениями заключается в том, что вам приходится пересчитывать их для каждого нового типа диаграммы, который вы делаете. Если вы знаете правильные варианты полей и длины, они будут соответствовать каждому будущему возможному графику, который вы сделаете. –