Сначала я, вероятно, неправильно вас понял и создал plot_ly - график, как я понял ваш вопрос - см. Текст и пример ниже горизонтальной линии.
Но потом у меня возникли сомнения , если это было то, что вы искали. К сожалению, у меня нет ответа в plot_ly в терминах того, о чем вы, вероятно, просите, но я могу предложить что-то в стиле ggplotly .
После определения числа областей n
создается новый фрейм данных, который строит два столбца, в которых x-столбец разделен на n
частей, а y-столбец повторяет значение y (1) n
раз.
Тогда ggplot
делается с geom_area
. Цвет приходит через scale_color_gradientn
. Этот метод строит n областей в каждой позиции на оси X с изменяющимся цветом. Таким образом, изменяя n
, вы меняете количество этих областей. Просто уменьшите n
, и вы увидите отдельные области в виде столбцов.
Я думаю, это демонстрирует для простого случая, что можно сделать.
library(ggplot2)
library(plotly)
#>
#> Attache Paket: 'plotly'
#> The following object is masked from 'package:ggplot2':
#>
#> last_plot
#> The following object is masked from 'package:stats':
#>
#> filter
#> The following object is masked from 'package:graphics':
#>
#> layout
# define number of segments
n = 400
df <- data.frame(x = seq(0, 1, by = 1/n), y = rep(1, n+1))
p <- ggplot(df, aes(x=x, y=y)) #+ geom_point()
pp <- p + geom_area(aes(group =x, color =x)) +
theme_minimal() + #coord_flip() +
scale_color_gradientn(colours = rainbow(10, s = 1, v = 1, start = 0, end = max(1, 10 - 1)/10, alpha = 1))
ggplotly(pp)
Создано в 2020-01-29 пакетом Представить (v0.3.0)
Первое решение :
В приведенном ниже коде я сначала построил фрейм данных, а затем использовал transform
и набрал groupby
, чтобы определить в списке стилей два цвета для двух значений в df$y
. Если я смотрю на веб-страницу, на которую вы указываете, я вижу синий-i sh цвет, без градиента. Итак, я предполагаю, что вы хотите цвет с кодом #ab63fa
. Я использовал два цвета для четырех точек - которые сгруппированы в 2 группы - черный и # ab63fa .
df <- data.frame(x = c(0, 1, 1, 0),
y = c(0, 0, 1, 1))
plot_ly(
type = 'scatter',
x = df$x,
y = df$y,
mode = 'markers',
transforms = list(
list(
type = 'groupby',
groups = df$y,
styles = list(
list(target = 0, value = list(marker =list(color = '#ab63fa'))),
list(target = 1, value = list(marker =list(color = 'black')))
)
)
)
)
Этот код основан на примере от сюжет