plotly / plotly/plotly.R

Give custom name to legend items in ggplotly object

オープン
#1,324 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

ggplotly
主要言語
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()
})
}

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. 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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。