Условный цвет для add_segment внутри графика в зависимости от значения - PullRequest
0 голосов
/ 07 октября 2018

Я изо всех сил пытаюсь найти решение проблемы ниже - уже просмотрел так много статей и других ресурсов.

То, что у меня есть в качестве источника данных:

Создание кадра данныхкак реактивные данные (я усек очень длинный SQL-запрос)

 get_MW_index_vergleich <- reactive({ serverdb = dbConnect(MySQL(),
 user='xx',password='xxx',dbname='xxx',host='localhost')
 on.exit(dbDisconnect(serverdb))
 rs <- dbSendQuery(serverdb, 'set character set "utf8"')
 werte_0022 <- sprintf("select some data from tables",input$var_fak_select)
 dataframe_0022 <- fetch(dbSendQuery(serverdb, werte_0022))
 return(dataframe_0022)
 })

Это дает мне правильно заполненный фрейм данных.

*'data.frame':  
13 obs. of  13 variables:  
$ Dimension: chr  "Anfrage" "Noten" "Dauer" "Interesse" ...  
$ MW_xU    : num  3.47 3.38 3.4 3.76 3.15 ...  
$ MW_gu    : num  3.32 3.56 3.19 3.52 3.4 ...  
$ MW_EU    : num  3.41 3.74 3.19 3.59 3.41 ...  
$ MW_nEU   : num  3.21 3.35 3.2 3.45 3.42 ...  
$ Index_GU : num  100 100 100 100 100 100 100 100 100 100 ...  
$ Index_xU : num  112.4 75 98.9 113.9 101.6 ...  
$ Index_nEU: num  91 71 99.9 96 99.9 ...  
$ Index_EU : num  107 124 100 104 100 ... 
$ Delta_GU : num  12.39 -24.98 -1.08 13.87 1.57 ...**  
$ Delta_GUP: chr  "12.39 %" "-24.98 %" "-1.08 %" "13.87 %" ...  
$ Delta_eU : num  4.97 -49.38 -1.09 9.83 1.61 ...  
$ Delta_neU: num  21.44 4.05 -1.02 17.84 1.69 ...

Теперь я хотел бы построить это, работает без проблем (не 100%, если это правильный подход, но он работает).Но я не нашел способа изменить цвет одного элемента (как вы можете видеть, значение Delta_GU является положительным / отрицательным)).Я хотел бы изменить цвет в зависимости от этого).

   output$plot_faktoren_index_xu = renderPlotly({
    data_faktoren_index_xu <- get_MW_index_vergleich()
    str(data_faktoren_index_xu)
    mw_index_xu <- plot_ly (data_faktoren_index_xu,color = "#ffffff") %>%
      add_segments(x = 0, xend = ~Index_GU, y = ~Dimension, yend = ~Dimension, line = list(color = "#eeeeee", width = 15), showlegend = FALSE, textfont = text_schwarz) %>%
      add_segments(x = 0, xend = ~Index_xU, y = ~Dimension, yend = ~Dimension, line = list(color = "#000000", width = 5), showlegend = FALSE, textfont = text_schwarz) %>%
      add_segments(x = 100, xend = as.numeric(data_faktoren_index_xu$Index_xU), y = ~Dimension, yend = ~Dimension, line = list(color = "red", width = 3), showlegend = FALSE, textfont = text_schwarz) %>%
#      add_segments(x = 100, xend = which(as.numeric(data_faktoren_index_xu$Index_xU) < 0) , y = ~Dimension, yend = ~Dimension, line = list(color = "red", width = 3), showlegend = FALSE, textfont = text_schwarz) %>%
      # ^^^This segment - depending on value of Delta_GU should get color red or green
      add_markers(x = ~Index_GU, y = ~Dimension, name = "abc Vergleich <br>Alle Kandidaten", marker = list(color = "orange"), textfont = text_schwarz) %>%
      add_text(x = ~Index_xU, y = ~Dimension, textfont = text_schwarz , text = ~Delta_GUP, textposition = "bottom right", showlegend = FALSE ) %>%      
      layout(
        title = paste("Dimensionen          abc-Vergleich <b>", input$var_kand,"</b> mit Alle Kandidaten"),
        xaxis = list(title = "abc "),
        yaxis = list(title = " "),
        margin = list(l = 165)
      )

    }
)

Любые идеи действительно приветствуются.Я пробовал разные подходы, но все они потерпели неудачу (хотя для цвета, который и т. Д.))

1 Ответ

0 голосов
/ 12 октября 2018

Как уже упоминалось выше - проблема решена.

    pal <- c( "#b8e55a","#e59029")

    mw_index_xu <- plot_ly (data_faktoren_index_xu,color = ~Color_xu, colors = pal, showlegend = FALSE) %>%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...