Rplotly - 同一图上的两个散点的不同色阶

标签 r r-plotly

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

我尝试了解决方案 here ,但它不起作用(我收到一条警告,指出'scatter'对象没有这些属性:'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))

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

enter image description here

最佳答案

这有效。如果您执行自定义操作,则必须根据 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

关于Rplotly - 同一图上的两个散点的不同色阶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231083/

相关文章:

r - 如何识别 R 中预测模型错误分类的实例

r - 使用 bootstrap 进行分位数回归的置信区间

r - 如何使用ggplotly-R使散点图点打开超链接

r - Plotly 不显示线条

R 绘图自定义数据格式变体

r - 为什么 geom_rect() 与facet_wrap() 一起使用时会添加许多多层?

r - 计算变量内区间的平均值

r - 分组条形图

r - 如何使用函数 ggplot() 和 plot_ly 增加 R 中轴标签和轴标题之间的空间?

r - Plotly 分类热图中的对角线注释