2013-07-22 6 views
24

Я пытаюсь создать диаграмму png, используя ggplot2 и ggsave (с Каиром) в R. У меня возникла проблема с настройкой темы для удаления полей.Удалить поля графика в ggplot2

В настоящее время я использую:

... + theme(plot.margin=unit(c(0,0,0,0),"mm"))  

Это, кажется, работает на двух из четырех сторон моего участка, он полностью удаляет верхний и боковой правой рукой запас, но есть еще достаточно большой запас на левой и нижней сторонах. Есть ли способ полностью удалить их? Изображение ниже, чтобы проиллюстрировать эту проблему:

enter image description here

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


Edit:

library("ggplot2") 
library("scales") 
library("Cairo") 
library("grid") 

# Set chart values 
line.width = 0.45 
axis.font.size = 2.9 

# Generate some random data 
start.date <- as.Date("2011-07-01") 
x.month <-seq.Date(start.date, by = "month", length.out = 24) 
end.date <- max(x.month) 

period.a <- rnorm(12, mean=50, sd=2) 
period.b <- rnorm(12, mean=55, sd=2) 

x.value <- c(period.a,period.b) 

# Combine into dataframe 
x.data <- data.frame(
    "Month" = x.month, 
    "Value" = x.value 
) 

# Build chart 
p <- ggplot(data=x.data, aes(Month, Value)) + geom_line(size=line.width) 
p <- p + theme_bw() 
p <- p + scale_y_continuous() 
p <- p + scale_x_date(limits=c(start.date+20,end.date-20), breaks = "1 month",labels = date_format("%b-%y")) 
p <- p + theme(axis.text.x=element_text(angle=90, hjust=1, vjust=0.5, size=axis.font.size), 
       axis.text.y=element_text(size=axis.font.size), 
       axis.title.x=element_blank(), 
       axis.title.y=element_blank(), 
       plot.margin=unit(c(0,0,0,0),"mm"), 
       plot.background = element_rect(fill = "grey"), 
       panel.grid=element_blank(), 
       panel.border=element_rect(size=line.width/2), 
       axis.ticks=element_line(size=line.width/3), 
       axis.ticks.length=unit(0.3, "mm"), 
       axis.ticks.margin=unit(0.2, "mm")) 

ggsave(file="c:\\temp\\test.png", plot=p, width=40, height=15, units="mm", type ="cairo-png") 

ответ

17

Согласно the source code, вам также необходимо установить метки на NULL,

last_plot() + labs(x=NULL, y=NULL) 

в качестве альтернативы, установите unit(-0.5, "line") для нижнего и левого краев.

+4

Да, или '' xlab (NULL) '' для управления одной меткой. Чем чаще встречаются '' xlab ("") '', такие как '' axis.title.x = element_blank() '', удаляет текст, а не пробел, afaik. И действительно, следуя ссылке baptiste, строка 56 подтверждает это: '' if (is.null (label $ x)) unit (0, "lines") else unit (0.5, "lines") '' – PatrickT

+0

это может также help: http://stackoverflow.com/questions/22945651/how-to-remove-space-between-axis-area-plot-in-ggplot2 –

Смежные вопросы