一开始我可能误解了您,并创建了一个 plot_ly - 情节,我如何理解您的问题 - 请参阅水平线下方的文本和示例。
但后来我怀疑,如果那是你要找的。不幸的是,对于您可能要求的内容,我没有 plot_ly 方面的答案,但可以提供 ggplotly 风格的内容。
在定义了n的区域数量后,创建了一个新的数据框,它构建了两列,其中x列分为n部分,y列重复y值(1) n 次。
然后ggplot 是用geom_area 组成的。颜色通过scale_color_gradientn 进入。此方法在 x 轴上的每个位置用不同的颜色绘制 n 个区域。因此,通过更改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)
由reprex package (v0.3.0) 于 2020-01-29 创建
第一个解决方案:
在下面的代码中,我首先构建了一个数据框,然后使用transform 并键入groupby 在样式列表中为df$y 中的两个值定义两种颜色。
如果我查看您指向的网页,我会看到蓝色,没有渐变。所以我假设你想要代码#ab63fa 的颜色。我为四个点使用了两种颜色 - 分为两组 - black 和 #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')))
)
)
)
)
此代码基于来自plotly的示例