[英]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.