在 R 中的分面图/子图之间保持颜色相同

问题描述 投票:0回答:1

按照 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”的数据点为蓝色,而在右侧子图中,它们为红色。

如何确保子图中的颜色稳定?

将重复项排除在图例之外也是一个优点!

r plotly
1个回答
0
投票

您的名字需要为

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

© www.soinside.com 2019 - 2024. All rights reserved.