私の目標は、for ループ内の複数の beeswarm プロットの分位数 (データの最初の 25%、2 番目の 25% など) にカスタム色を割り当てることです。コードと蜂の巣の画像を追加しました。カスタム カラーをドットに割り当てるには、灰色のドット (プロットを参照) を 4 つのほぼ等しいグループに分割する必要があります。これを cut() と quantile() でやろうとしています。
colNames <- names(df)[15:18]
for(i in colNames){
plot <- ggplot(data = df %>% filter(player != "F. Gago"), aes_string(x = factor(0), y = i), groupOnX = FALSE) +
geom_quasirandom(shape = 21, fill = **cut(quantile(i))**, size = 12) +
scale_fill_manual(values = c("Red", "Orange", "Yellow", "Green")) +
labs(title = i) +
theme(axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_text(size = 20, colour = "black"),
axis.ticks.x = element_blank(),
plot.title = element_text(size = 25, vjust = 3, colour = "black", face = "bold"),
plot.caption = element_text(vjust = -6, face = "italic"),
plot.margin = unit(c(1, 1, 1, 1), "cm"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line.x = element_line(colour = "black", size = 2)) +
geom_point(data = df %>% filter(player == "F. Gago"), aes_string(y = i), shape = 21, colour = "white", fill = "#62150F", size = 14) +
coord_flip()
print(plot)
Sys.sleep(2)
}
上記のコードを実行すると、次のエラーが表示されます。
(1 - h) * qs[i] のエラー: 二項演算子への数値以外の引数
cut() 関数を使用してコードの一部を次のように調整しました。
cut(quantile(df[[i]]), breaks = 4)
次のエラーが表示されます。
エラー: 美学は長さ 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 ループ内でそれらにカスタム カラーを割り当てるにはどうすればよいですか?