我正在尝试创建一个以颜色为我的三维尺寸的散点图。我可以根据自己的喜好更改色标,但是无法更改色标以匹配散点图的色标(即使我指定了colorscale =“ Hot”,色标仍为“ Viridis”)。
library(plotly)
data = iris
p = plot_ly(data,
x=~ Sepal.Length,
y=~ Sepal.Width,
type = 'scatter',
mode = 'markers',
marker = list(
size=10,
opacity=.9,
colorscale='Hot'),
color=~Petal.Length)
colorbar(p)
我希望颜色栏与指定的色标匹配,但它仍为“ Viridis”。
答案 0 :(得分:1)
我不是情节专家,所以我不确定潜在的问题,但可以通过在color=
参数内移动colorbar=
和marker=
定义来解决问题:
plot_ly(data,
x=~ Sepal.Length,
y=~ Sepal.Width,
type = 'scatter',
mode = 'markers',
marker = list(
color=~Petal.Length,
size=10,
opacity=.9,
colorscale='Hot',
colorbar=list(
title='Colorbar'
)
)
)
或者,如果您使用colors=
参数而不是colorscale=
来定义色标,它将按需工作。缺点是您必须使用:
或者是colorbrewer2.org调色板名称(例如“ YlOrRd”或“蓝色”),或者是要以十六进制“ #RRGGBB”格式进行插值的颜色矢量,或者是诸如colorRamp()的颜色插值函数
p = plot_ly(data,
x=~ Sepal.Length,
y=~ Sepal.Width,
type = 'scatter',
mode = 'markers',
marker = list(
size=10,
opacity=.9),
color=~Petal.Length,
colors = 'Blues'
)
colorbar(p)
'Blues'
是一个颜色缩放比例。您还可以使用viridis
包中的色标(请参见?viridisLite::viridis
),例如:
# note that you need to provide an n= argument >= the number of colors needed
viridis::inferno(99)