我想绘制带有增加的geom_hline的构面图,并在图例中显示该线。但是,当我将行添加到图例时,所有条目都重复到构面数。
如何避免这种行为?
这是我的MWE
library(shiny)
library(plotly)
library(ggplot2)
df <- mpg
# Define UI for application that draws a histogram
ui <- fluidPage(
mainPanel(
plotlyOutput('graph')
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$graph <- renderPlotly({
p <- ggplot2::mpg %>%
plot_ly %>%
ggplot() +
geom_point(aes(displ, hwy, color = class))
facet <- p + facet_wrap(~year)
facet + geom_hline(aes(yintercept = 20, linetype = 'hline20'), color = '#00b700') +
scale_linetype_manual(name = 'line', values = 1,
guide = guide_legend(aes = list(color = "#00b700")))
})
}
# Run the application
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
问题不是shiny
也不是ggplot2
。问题是将ggplot2
对象转换为plotly
对象。
下面,我将ggplot步骤与plotly步骤隔离开了,并完全消除了图片中的亮点。
p <- ggplot2::mpg %>%
ggplot() +
geom_point(aes(x = displ, y = hwy, color = class))
facet <- p + facet_wrap(~year)
final <- facet + geom_hline(aes(yintercept = 20, linetype = 'hline20'), color = '#00b700') +
scale_linetype_manual(name = 'line', values = 1, guide = guide_legend(aes = list(color = "#00b700")))
print(final)
上面显示的很好。
ggplotly(final)
上面的显示错误与您的显示错误相同,不涉及闪亮。
将ggplot2对象转换为可打印对象时,通常会出现图例问题和其他显示问题。 Plotly和ggplot2是完全独立的绘图框架,具有自己的语法和图形对象。 Plotly提供了转换函数方法,但是在从一种格式转换为另一种格式的过程中,事情仍然会丢失,因为它们之间没有完全等同的内容。
我建议您尝试以本机plotly
的语法来实现您的绘图,而不是尝试从ggplot2
进行转换。