如何使用R-Plotly更改颜色条的色阶?

时间:2019-04-22 15:49:31

标签: r r-plotly

我正在尝试创建一个以颜色为我的三维尺寸的散点图。我可以根据自己的喜好更改色标,但是无法更改色标以匹配散点图的色标(即使我指定了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”。

The colorbar should match the specified colorscale = 'Hot' but it still displays 'Viridis'

1 个答案:

答案 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'
            )
        )
)

enter image description here

或者,如果您使用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)

enter image description here

'Blues'是一个颜色缩放比例。您还可以使用viridis包中的色标(请参见?viridisLite::viridis),例如:

# note that you need to provide an n= argument >= the number of colors needed
viridis::inferno(99)