我试图用闪亮的名字命名一个ggplot的传说 . 问题是,由于用户可以关闭和在线上更改每行的名称,因此图例的名字与第一个可见行相关联 .
我需要一种方法来重命名传说 .
数据:
data_raw < - 结构(列表(组1)=结构(c(1L,2L,3L,4L,5L,6L,7L,1L,2L,3L,4L,5L,7L,1L,2L,3L,4L, 5L,6L,7L),. Label = c(“2016-07-01”,“2016-08-01”,“2016-09-01”,“2016-10-01”,“2016-11-01 “,”2016-12-01“,”2017-01-01“),class =”factor“),Group.2 = c(101,101,101,101,101,101,101,103,103, 103,103,103,103,105,105,105,105,105,105,105),x = c(“57976”,“42933”,“49731”,“46808”,“48938”,“41937” ,“41932”,“48900”,“37625”,“57700”,“41700”,“57600”,“48800”,“46102”,“35796”,“42490”,“46755”,“46757”,“ 46810“,”45232“)),. Name = c(”Group.1“,”Group.2“,”x“),row.names = c(NA,20L),class =”data.frame“)
代码:
library(shiny)
library(ggplot2)
ui <- fluidPage(
titlePanel("Legends"),
sidebarLayout(position = "left",
sidebarPanel(checkboxGroupInput("checkGroup",
label = h3("Postnumber"),
choices = list(
"101" = 101,
"103" = 103,
"105" = 105),
selected = "101"
)),
mainPanel("main panel",
plotOutput('myplot'))
))
server <- function(input, output) {
output$myplot <- renderPlot({
grouped_data <- data_raw[data_raw$Group.2 %in% input$checkGroup,]
p <- ggplot(grouped_data, aes(Group.1, x, group = Group.2)) +
scale_colour_manual(values=c("#999999", "#E69F00", "#56B4E9"),
labels=c("postnr 101", "postnr 103", "postnr 105"))
p + geom_line() +
theme(axis.title.y=element_text(margin=margin(0,20,0,0))) +
geom_line(data = grouped_data, aes(colour = factor(Group.2)))
})
}
shinyApp(ui = ui, server = server) # this launches your app
我是按原样保留图例(没有任何重命名),它使用checkboxGroupInput下选项列表中的正确名称,但我需要能够重命名它 .
1 回答
我修改了你的服务器功能:
标签项目(101,103,105)使用以下命令重命名(到“postnr 101”等):
然后将它们转换为有序因子(以便每个项目,例如“postnr 101”始终获得相同的颜色):
最后,我修改了ggplot以使用aes_string(因为在data.frame中有一个名为
x
的变量)并使用guide = guide_legend(title = "Postnr")
为图例赋予 Headers .drop = FALSE
确保颜色一致(因为未使用的因子级别不会被丢弃) .如果未选中任何复选框,则会出现错误,因此您需要在生成绘图之前检查
grouped_data
data.frame是否至少有一行 . 如果nrow(grouped_data) == 0
则返回NULL
(无图) .