在for循环中为蜂群图中的分位数指定颜色

在for循环中为蜂群图中的分位数指定颜色,r,loops,ggplot2,data-visualization,beeswarm,R,Loops,Ggplot2,Data Visualization,Beeswarm,我的目标是为for循环中的多个蜂群图的分位数指定自定义颜色(数据的前25%,后25%,等等)。我添加了我的代码和蜂群图的图像。灰色点(见图)需要分成四个大致相等的组,以便为点指定自定义颜色。我试图用cut()和quantile()来实现这一点 我收到以下错误: 错误:长度必须为1或与数据相同 (22):填充 我相信上述错误是由于数据中应用了过滤器(23个数据点到22个数据点)造成的 要使用的一些代码: structure(list(player = c("F. Vera",

我的目标是为for循环中的多个蜂群图的分位数指定自定义颜色(数据的前25%,后25%,等等)。我添加了我的代码和蜂群图的图像。灰色点(见图)需要分成四个大致相等的组,以便为点指定自定义颜色。我试图用cut()和quantile()来实现这一点

我收到以下错误:

错误:长度必须为1或与数据相同 (22):填充

我相信上述错误是由于数据中应用了过滤器(23个数据点到22个数据点)造成的

要使用的一些代码:

structure(list(player = c("F. Vera", "G. Giménez", "L. Romero", 
"M. Pittón", "L. Vera", "E. Pérez"), team = c("Argentinos Juniors", 
"Chicago Fire", "Independiente", "Vélez Sarsfield", "Lanús", 
"River Plate"), position = c("DMF, RDMF", "DMF, LCB, LDMF", "DMF, LCMF, LDMF", 
"DMF, LDMF, RDMF", "RDMF, RCMF, LCMF", "DMF"), age = c(20, 28, 
26, 25, 23, 34), market_value = c(9e+06, 3e+06, 3e+06, 2e+06, 
2e+06, 2e+06), contract_expires = c("2021-06-30", "2021-12-31", 
"2023-06-30", "2023-06-30", "2021-06-30", "2023-06-30"), matches_played = c(14, 
19, 19, 11, 20, 18), minutes_played = c(973, 1595, 1718, 589, 
1571, 1625), birth_country = c("Argentina", "Argentina", "Argentina", 
"Argentina", "Argentina", "Argentina"), passport_country = c("Argentina", 
"Argentina", "Argentina", "Argentina", "Argentina", "Argentina"
), foot = c("right", "left", "right", "right", "right", "right"
), height = c(179, 180, 167, 181, 164, 178), weight = c(74, 78, 
70, 70, 60, 77), on_loan = c("no", "no", "no", "no", "no", "no"
), p_adj_interceptions = c(6.93, 8.33, 10.58, 6.75, 4.46, 10.29
), progressive_runs_per_90 = c(1.11, 2.09, 0.37, 0.92, 3.04, 
1.22), smt_passes_per_90 = c(0.18, 0.39, 0.31, 0.46, 2.52, 0.55
), progressive_passes_per_90 = c(6.29, 8.35, 7.86, 6.57, 10.71, 
11.91)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))

如何获得数据的分位数并在for循环中为其指定自定义颜色?

如果我正确理解您的问题,您可以在构建绘图之前通过使用ntile()函数(根据分位数编号)添加新列来“预处理”数据,然后将这个新的列转换成一个因子,最后通过将这个新列映射到颜色来构建绘图。

在这里复制并粘贴
dput(df)
的输出,这样我们就可以使用一些代码了。@RicardoSemiãoeCastro我添加了一些代码来使用。谢谢!我已经对代码的几个部分进行了轻微的调整(主要调整见下文),它可以正常工作<代码>df$分位数
cut(quantile(df[[i]]), breaks = 4)
structure(list(player = c("F. Vera", "G. Giménez", "L. Romero", 
"M. Pittón", "L. Vera", "E. Pérez"), team = c("Argentinos Juniors", 
"Chicago Fire", "Independiente", "Vélez Sarsfield", "Lanús", 
"River Plate"), position = c("DMF, RDMF", "DMF, LCB, LDMF", "DMF, LCMF, LDMF", 
"DMF, LDMF, RDMF", "RDMF, RCMF, LCMF", "DMF"), age = c(20, 28, 
26, 25, 23, 34), market_value = c(9e+06, 3e+06, 3e+06, 2e+06, 
2e+06, 2e+06), contract_expires = c("2021-06-30", "2021-12-31", 
"2023-06-30", "2023-06-30", "2021-06-30", "2023-06-30"), matches_played = c(14, 
19, 19, 11, 20, 18), minutes_played = c(973, 1595, 1718, 589, 
1571, 1625), birth_country = c("Argentina", "Argentina", "Argentina", 
"Argentina", "Argentina", "Argentina"), passport_country = c("Argentina", 
"Argentina", "Argentina", "Argentina", "Argentina", "Argentina"
), foot = c("right", "left", "right", "right", "right", "right"
), height = c(179, 180, 167, 181, 164, 178), weight = c(74, 78, 
70, 70, 60, 77), on_loan = c("no", "no", "no", "no", "no", "no"
), p_adj_interceptions = c(6.93, 8.33, 10.58, 6.75, 4.46, 10.29
), progressive_runs_per_90 = c(1.11, 2.09, 0.37, 0.92, 3.04, 
1.22), smt_passes_per_90 = c(0.18, 0.39, 0.31, 0.46, 2.52, 0.55
), progressive_passes_per_90 = c(6.29, 8.35, 7.86, 6.57, 10.71, 
11.91)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))