簡體   English   中英

R Plotly:拆分圖例:符號和顏色

[英]R Plotly: Split legend: symbols and color

我為每個數據點“符號”和“名稱”提供了一些數據和兩個類別。 我正在繪制數據並使用不同的符號和顏色映射類別,如下所示。

data <- data.frame(
        x= c(1,2,3,4,5,6,7,8),
        y = c(10,11,10,12,11,9,8,13), 
        symbol = c("invalid", "valid", "invalid",
                   "valid", "valid", "valid","valid", "valid"),
        name = c("A", "B", "B", "A", "A", "A", "B", "B"))


plot_ly(data) %>%
add_markers(y = ~y,  x = ~x,  symbol = ~symbol, color = ~name,
            symbols = c(4, 27),
            mode = 'markers',
            #split = ~name,
            colors = c("red", "navy"))

在此輸入圖像描述

傳說非常笨拙。

我想將兩個圖例條目與十字架合並,並在圖例中為十字形設置中性色,如下所示:

在此輸入圖像描述

我嘗試使用split參數,但這沒有幫助。

你可以分三步完成:

  1. 繪制有效數據
  2. 將所有無效數據繪制為灰色和圖例
  3. 在沒有圖例的情況下以顏色繪制所有無效數據

碼:

data$labels <- data$name
levels(data$labels) <- c("A", "B", "invalid")

plot_ly(data, colors = c("red", "navy", "grey")) %>%
  add_markers(y = ~y,  x = ~x, color = ~labels,
              data = data[data$symbol == "valid",],
              symbols = 4,
              mode = 'markers') %>%
  add_markers(y = ~y,  x = ~x,  symbol = ~symbol, 
              color = factor("invalid", levels = c("A", "B", "invalid")),
              data = data[data$symbol == "invalid",],
              symbols = 27,
              mode = 'markers',
              name = 'invalid',
              legendgroup = factor("invalid", levels = c("A", "B", "invalid"))) %>%
  add_markers(y = ~y,  x = ~x,  symbol = ~symbol, color = ~labels,
              data = data[data$symbol == "invalid",],
              symbols = 27,
              mode = 'markers',
              legendgroup = factor("invalid", levels = c("A", "B", "invalid")),
              showlegend = FALSE)

結果:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM