2017-01-17 2 views
0

Итак, я знаю, что в этом вопросе много сообщений по этому вопросу (я думаю, что я прочитал их все на данном этапе). Я пробовал использовать hjust и margin() после изучения hjust/vjust - хаки, и ничего не получится; независимо от того, что я делаю, заголовок ggplot остается центрированным. Мне нужно, чтобы он оставил выровненным. Это возможно? Это связано с макетом моего текущего кода? Может кто-нибудь, пожалуйста, помогите ?! Код ниже. Огромное спасибо заранее! :)Название выровненного ggplot (Tried hjust/margin() и ничего не работает)

Кроме того, в стороне от вышеупомянутого вопроса, можно ли поместить текст заголовка внутри цветного окна? Например, белый текст, встроенный в черный ящик?

Еще раз спасибо!

output$plot <- renderPlotly({ 
    if(input$Player == "") 
     return(NULL) 

    player_trend <- injury[injury$Player == input$Player, ] 

    ggideal_point <- ggplot(player_trend) + 
     geom_line(aes(x = Season, y = WAR), size = 1.25) + 
     geom_point(aes(x = Season, y = WAR), size = 3) + 
     labs(x = "Season", y = "WAR") + 
     ggtitle("Title Goes Here") + 
+2

В настоящий момент самый простой способ оставить свой заголовок - обновить ggplot. Тем не менее, у вас есть половина сюжетного сюжета (через Shiny). Если 'ggplotly' испортит ваш заголовок, вам придется пройти через функции plotly. – alistaire

ответ

2

Вы не предоставили никаких данных или изображений о том, что не так, и возможно, желаемого результата и на самом деле задали несколько вопросов.

Вы ищете манипуляции как пост-ggplot2 -build grob level. Это серьезная работа на низком уровне.

Это:

#' Completely flush-left-align ggplot2 title 
#' 
#' @return \code{gtable} object 
#' @param gg ggplot2 object 
title_left <- function(gg) { 

    gt <- ggplot_gtable(ggplot_build(gg)) 
    gt$layout[which(gt$layout$name == "title"), c("l", "r")] <- c(1, max(gt$layout$r)) 
    gt 

} 

флеш-влево (полностью) выравнивает заголовок. Это уже не объект ggplot2, и вам нужно использовать функции grid, чтобы нарисовать его (например, grid::grid.newpage() и grid::grid.draw()). Если вы хотите, чтобы он был меньше нуля, вам нужно настроить функцию.

Для вашего второстепенного второго вопроса вам нужно будет использовать что-то вроде этого: https://stackoverflow.com/a/37156845/1457051 - а затем смените указанную выше функцию, чтобы переместить название фасета и прямые грызуны (что я не буду делать, но другие здесь могут сделать для вас).

ОДНАКО

Вы не ggplot2 -land, вы в shiny и используя plotly так это все спорно. Обратите внимание, что вы на самом деле не сказали нам, что, но output$plot <- renderPlotly({ подразумевает это. Ваше желание интерактивности идет (по иронии судьбы), чтобы ограничить ваши возможности. plotly является удивительным для быстрого интерактивного взаимодействия, но вы потратили меньше времени на создание своего собственного htmlwidget, чем пытались бы вырезать решение в plotly (хотя добавление пользовательского CSS для целевого элемента участка могло бы работать, но также будет связано с исследованиями).