2014-12-27 3 views
0

С помощью следующего кода я могу удалить верхнюю и правую границы вместе с другими вещами. Интересно, как удалить правую границу только графика ggplot2. Любая помощь в этом отношении будет высоко оценена. Заранее спасибо за вашу помощь.Удаление правой границы из графика ggplot2

p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() 

p + theme_classic() 
+0

это не так просто, потому что 'panel.border' управляются как' element_rect 'object, таким образом, это уже прямоугольник. –

+1

Возможный дубликат: http://stackoverflow.com/questions/10861773/remove-grid-background-color-and-top-and-right-borders-from-ggplot2 – lawyeR

+0

Я согласен с Davide: возможно, это будет невозможно. Я предполагаю, что theme_classic фактически полностью удаляет ящик и вместо этого рисует оси. Чтобы проиллюстрировать это, попробуйте 'p + theme (axis.line = element_line())'. Он будет отображать 'p' со стандартной темой, но с добавленными линиями осей. – Stibu

ответ

3

тема система встает на пути, но с небольшим твистом вы можете взломать элементы темы,

library(ggplot2) 
library(grid) 
element_grob.element_custom <- function(element, ...) { 

    segmentsGrob(c(1,0,0), 
       c(0,0,1), 
       c(0,0,1), 
       c(0,1,1), gp=gpar(lwd=2)) 
} 
## silly wrapper to fool ggplot2 
border_custom <- function(...){ 
    structure(
    list(...), # this ... information is not used, btw 
    class = c("element_custom","element_blank", "element") # inheritance test workaround 
) 

} 
ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + 
    theme_classic() + 
    theme(panel.border=border_custom()) 
+0

(+1): Идеальный ответ. Большое спасибо за вашу помощь. – MYaseen208

+0

Спасибо за хороший ответ. Пожалуйста, см. Мои изменения и предложите любое решение, если вы не возражаете. В очередной раз благодарим за помощь. – MYaseen208

+0

предположительно, если вы примените эту тему к сюжетам, прежде чем преобразовать их в gtable, этот элемент следует передать вдоль – baptiste

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