Give custom name to legend items in ggplotly object
まだ誰も着手していません。
- 主要言語
- R
- スター
- 2.7k
- フォーク
- 641
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Hi,
I want to make the legend items to be displayed by the choice of inputs and having an "and" between two variables.
I added my sample shiny app, which demonstrates the need for this.
I can change the legend items in ggplot itself. But ggplotly object doesn't reflect this change.
If anybody help me on this, I would be appreciated.
Thank you.
Mustafa
library(data.table)
library(shiny)
library(plotly)
library(shinycssloaders)
global.R file:
df <- data.frame(gender=rep(c("Male", "Female", "Both gender"), each=12, times=3),
age.group=rep(c("15 years and over", "15 to 19 years", "15 to 64 years"), each=36, times=1),
rate=rnorm(108, mean=5, sd=1),
date=rep(seq(as.Date('1976-01-01'),as.Date('1977-01-01'),by = 31), times=9))
df <- as.data.table(df)
mycolor12 = c("#bdc9e1","#55aadb","#016c59", "#FF8C00", "#EE3B3B", "#EEC591", "#00FFFF",
"#8B7500", "#AB82FF", "#FFFFE0", "#FFE1FF", "#8B7E66")
ui.R file:
navbarPage("Sample app",
navbarMenu('First dataset',
tabPanel("Second navigation bar",
fluidRow(
column(3,
wellPanel(
checkboxGroupInput("gender", label = "Gender",
choices = c(
"Both gender",
"Male",
"Female"),
selected = "Both gender"
),
checkboxGroupInput("agegroup", label = "Age group",
choices = c(
"15 years and over",
"15 to 19 years",
"15 to 64 years"),
selected = "15 years and over"
)
),
width=4,
height=110
),
hr(),
column(9,
plotlyOutput('plot_interactive', width=1000, height =450) %>%
withSpinner(color="#0dc5c1"))
)
)
)
)
server.R file:
function(input, output,session){
df_interactive <- reactive({
df[age.group %in% input$agegroup &
gender %in% input$gender]
})
target_plot <- reactive({
p <- ggplot(df_interactive(), aes(x=date, y=rate, colour = interaction(age.group, gender)))+
geom_line(aes(color=interaction(age.group, gender)), size=0.5)+
labs(y = "", x = "") +
scale_color_manual(values = mycolor12, name = '',
labels = paste(input$agegroup, input$gender, sep=" and "),
guide = guide_legend(
title="",
direction = "vertical",
label.position = "right",
label.hjust = 0.5,
label.vjust = 1
))+
scale_y_continuous(labels = scales::percent) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y")
p <- ggplotly(p) %>% config(displayModeBar = F) %>%
layout(legend = list(orientation = "v", x = 1, y=0.3, font = list(size = 10, bgcolor = 'rgb(251)')))
})
output$plot_interactive <- renderPlotly({
target_plot()
})
}
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
ui.R、server.R、global.R からサンプルの Shiny アプリを実行し、ggplotly が ggplot の凡例を変換する target_plot を調べます。scale_color_manual から要求されたラベルとインタラクティブな凡例の出力を比較します。完了条件は、ggplotly の凡例に選択された入力が "and" で結合されて表示されることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- r
- 領域
- data-visualization
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 35/100