我尝试使用两个 à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))
提前致谢(实际结果如下图所示)。
最佳答案
这有效。如果您执行自定义操作,则必须根据 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
关于Rplotly - 同一图上的两个散点的不同色阶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231083/