Плотно игнорирует мою заданную цветовую схему при использовании type = "scatter", но сохраняет ее при использовании type = NULL, даже если цветовая схема не установлена до следующего кода.
Попытки использовать mode = "маркеры" или mode = "линии" или mode = "линии + маркеры" приводят к созданию нескольких строк.
Я понимаю, что mtcars - странный набор данных для добавления предупреждений и времени для этого примера кода, но он точно показывает проблему.Я исправил код, и он находится в производстве с type = NULL, но имея точную догадку, тип печати кажется нестабильным (и в некоторых случаях он принимает гистограмму).
Если я использую type = NULL в Разделе 1, тогда я получаю правильную цветовую схему (красный, желтый, зеленый).
если я использую type = "scatter", тогда он использует другую цветовую схему.Если я использую type = "scatter", mode = "lines + markers", он также использует другую цветовую схему.
Когда ось x имеет положительные значения или даты, то она, по крайней мере, остается как одна линия с разными цветными точками.Но поскольку я полагался на type = NULL, чтобы получить правильную цветовую схему, в зависимости от класса компонента времени, он может принимать гистограмму или создавать несколько строк (по одной на каждое предупреждение).
library(plotly)
pal <- c("red","yellow","green4")
pal <- setNames(pal,c("Serious","Moderate","Low"))
x = NULL
for(i in 2007:2009){
for(j in 1:12)
x <- c(x, paste(i,j,"01",sep="-"))
}
x <- x[1:nrow(mtcars)]
x <-as.Date(x)
y <- as.POSIXct(x)
set.seed(4)
mtcars$alert <- sample(c("Serious","Moderate","Low"),size =
nrow(mtcars),replace = TRUE)
mtcars$date <- x
mtcars$posixct <- y
#' Section 1
p <- plot_ly(mtcars, width = 800,
height = 600, type = NULL # must be made null
#' for some reason using any other type (i.e. scatter)
#' results in multiple traces for each factor (i.e. when you color
#' by the alert, multiple lines are created.) OR results in the colors being ignored
#' The only current workaround is for plot_ly to assume scatter
#' in which case it does not separate the values into new traces and keeps the set colors.
#' in ggplot you can use geom_point() and geom_line() to layer the
#' graphics, but this is not possible in plot_ly.
) %>%
#' Section 2
add_markers(x=~posixct, y=~wt, mode = "markers",color =~alert, colors = pal,
marker =list(size = 10)) %>%
add_trace(x=~posixct,y=~wt,mode = 'line',
line = list(color = 'rgb(0, 0, 0)', width = 2), showlegend=FALSE)
p <- p %>% layout(
xaxis = list(title = "Time"),
yaxis = list(title = "weight"),
title = "weight over index as a time", titlefont = list(size = 20),
margin = list(l = 50, r = 50, t = 50, b = 50),
showlegend = TRUE,legend = list(traceorder = "reversed")
)
config(p,collaborate = FALSE,cloud = FALSE,displaylogo = FALSE,
modeBarButtonsToRemove = c("zoom2d","pan2d","select2d","lasso2d",
"zoomIn2d","zoomOut2d","autoScale2d",
"hoverCompareCartesian","toggleHover","toggleSpikelines"))