【问题标题】:R plotly - Different colorscales for two scatter on the same plotsR plotly - 相同地块上两个散点的不同色阶
【发布时间】:2018-03-12 08:41:00
【问题描述】:

我正在尝试使用两个àdd_trace 命令在同一个图形上绘制两组不同的数据。我为每个指定了不同的色阶,但第二个被忽略了,所以我的第二个散点图具有与第一个相同的颜色渐变。我该如何解决这个问题?

我尝试了here 的解决方案,但它不起作用(我收到一条警告说'scatter' objects don't have these attributes: 'colorscale')。

我的代码(带有用于测试的随机数的数据框):

library(plotly)
library(FactoMineR)

n <- 10 ; m <- 20 ; reps <- 6 
a <- as.data.frame(cbind(matrix(seq_len(m), n, m/n), 
                         replicate(reps, sample(c(0, 1), n, replace = TRUE))))

res.pca = PCA(a, scale.unit=TRUE, graph=F, axes=c(1,2))
ind <- as.data.frame(res.pca$ind$coord)
cos2 <- as.data.frame(res.pca$ind$cos2)
var <- as.data.frame(res.pca$var$coord)
cos2_v <- as.data.frame(res.pca$var$cos2)

biplot <- plot_ly(ind) %>%
  add_trace(x=ind[,1],
            y=ind[,2],
            type='scatter',
            text=rownames(a),
            textposition='top',
            mode="markers+text", 
            color=cos2[,1],
            colors="OrRd",
            marker=list(symbol=27, size=11)) %>%
  add_trace(var, 
            x=var[,1], 
            y=var[,2],
            type = 'scatter',
            text=colnames(a),
            textposition='top',
            mode="markers+text", 
            color=cos2_v[,1],
            colors="BuGn",
            marker=list(symbol=4, size=11))

提前致谢(实际结果如下图所示)。

【问题讨论】:

  • 请帮忙!我被困住了! :)

标签: r r-plotly


【解决方案1】:

这行得通。如果你做一些自定义的事情,你必须根据plotly::schema() 格式化参数。 plotly 中的 colors 参数有助于简化更复杂的 plotly.js 语法。请注意color 和所有其他标记参数必须位于名为marker 的列表中,在该列表下您必须手动格式化colorscale(以获取所需的颜色)和colorbar(以获取色标定位正确)。另请注意,图例用于形状,而色阶用于颜色(令人困惑的是色阶不是图例)。

library(plotly)
library(FactoMineR)

n <- 10 ; m <- 20 ; reps <- 6
a <- as.data.frame(cbind(matrix(seq_len(m), n, m/n),
                         replicate(reps, sample(c(0, 1), n, replace = TRUE))))

res.pca = PCA(a, scale.unit=TRUE, graph=F, axes=c(1,2))
ind <- as.data.frame(res.pca$ind$coord)
cos2 <- as.data.frame(res.pca$ind$cos2)
var <- as.data.frame(res.pca$var$coord)
cos2_v <- as.data.frame(res.pca$var$cos2)

biplot <- plot_ly(ind,showlegend=F) %>%
  add_trace(x=ind[,1],
            y=ind[,2],
            type='scatter',
            text=rownames(a),
            textposition='top',
            mode="markers+text",
            marker=list(symbol=27, size=11
                        ,color=cos2[,1]
                        ,colorscale=list(
                          list(0,RColorBrewer::brewer.pal(3,'OrRd')[1])
                          ,list(1,RColorBrewer::brewer.pal(3,'OrRd')[3])
                        )
                        ,colorbar=list(yanchor='bottom',len=.5)
            )) %>%
  add_trace(x=var[,1],
            y=var[,2],
            type='scatter',
            text=colnames(a),
            textposition='top',
            mode="markers+text",
            marker=list(symbol=4, size=11
                        ,color=cos2_v[,1]
                        ,colorscale=list(
                          list(0,RColorBrewer::brewer.pal(3,'BuGn')[1])
                          ,list(1,RColorBrewer::brewer.pal(3,'BuGn')[3])
                        )
                        ,colorbar=list(yanchor='top',len=.5)
            ))
biplot

result with two colorscales

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2014-08-05
    • 2016-08-08
    相关资源
    最近更新 更多