簡體   English   中英

根據data.frame列在繪圖散點圖中設置標記顏色

[英]Set marker color in plotly scatter plot based on data.frame column

我有一個data.frame ,我試圖用繪制plotly 我想用兩個變量繪制line圖,並根據第三個變量設置標記顏色。 下面的示例顯示了使用mtcars作為樣本數據集的情況。

library(data.table)
library(plotly)
plot_ly(as.data.table(mtcars)[order(wt)]) %>% 
  add_trace(x = ~wt, y = ~mpg, color = ~vs, type = 'scatter', mode = 'lines+markers')

輸出如下: 在此處輸入圖片說明

在我的實際數據集中,如mtcars ,變量可以采用離散值(0或1)。 默認情況下,在圖例中使用plotly將其視為連續變量。 我只想顯示與變量可以假定的兩個值相對應的兩種顏色,而不顯示任何顏色條。

我嘗試將變量設置為一個因子,但是返回兩個折線圖,這不是我想要的:

plot_ly(as.data.table(mtcars)[order(wt)]) %>% 
  add_trace(x = ~wt, y = ~mpg, color = ~as.factor(vs), type = 'scatter', mode = 'lines+markers')

在此處輸入圖片說明

我還嘗試根據第三個變量單獨設置標記顏色:

plot_ly(as.data.table(mtcars)[order(wt)]) %>% 
  add_trace(x = ~wt, y = ~mpg, color = ~as.factor(vs), type = 'scatter', mode = 'lines+markers')

這行得通,但我無法指定兩個levels的顏色。 我嘗試使用marker = list(colors = c('green', 'red', ...)沒有成功。

在此處輸入圖片說明

總而言之,我想為兩個變量顯示一條線圖(均勻顏色),並將標記設置為我根據第三個變量的值指定的兩種離散顏色(無顏色條)。

一種方法是手動設置每個標記的顏色,如下所示,您可以根據第三個變量vs的值在下面的recode()函數中指定顏色。

data <- data.frame(mtcars,stringsAsFactors = F)
data <- data %>% 
  arrange(wt) %>% 
  mutate(vs = as.character(vs),
         color = recode(vs,`1` = "red",
                        `0` = "blue"))

plot_ly(data) %>% 
       add_trace(x = ~wt, y = ~mpg, type = 'scatter', mode = 'lines+markers',
                 marker = list(color = ~color))

暫無
暫無

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

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