按照 R 绘图文档,通过在 1 个变量上分割数据集,然后在每个分割上应用相同的绘图函数,最后使用
subplot
组合绘图来进行分面。
如果我在一个变量上对一个数据框进行分面,但在另一个变量上进行颜色处理,我最终可能会在每个子图中使用不同的变量子集进行着色,从而导致相同的值在子图之间具有不同的颜色。
library(plotly)
library(dplyr)
iris%>%
mutate(name = unlist(c(rep(c("A", "B"), 30), rep(c("A", "B", "C"), 30)))) %>%
group_by(Sepal.Length > 5) %>%
do(p=plot_ly(., x = ~Sepal.Length, y = ~Sepal.Width, color = ~name, type = "scatter")) %>%
subplot(nrows = 1, shareX = TRUE, shareY = TRUE)
在左侧子图中,名称为“B”的数据点为蓝色,而在右侧子图中,它们为红色。
如何确保子图中的颜色稳定?
将重复项排除在图例之外也是一个优点!
您的名字需要为
factor
并且仅显示其中之一的图例
次要情节。
在这里,我将
showlegend
设置为 Sepal.Length > 5
,因为该组拥有所有名称/级别。如果您遇到没有一个组涵盖所有名称的情况,那么我们需要事先做更多的数据准备。
iris %>%
mutate(name = factor(unlist(c(rep(c("A", "B"), 30),
rep(c("A", "B", "C"), 30))))) %>%
group_by(Sepal.Length > 5) %>%
do(p=plot_ly(., x = ~Sepal.Length, y = ~Sepal.Width,
color = ~name, type = "scatter", mode = "markers",
showlegend = ~unique(Sepal.Length > 5))) %>%
subplot(nrows = 1, shareX = TRUE, shareY = TRUE)
创建于 2024-03-26,使用 reprex v2.0.2