我想我錯過了ggplot2的一次更新,有些事情顯然已經改變了。 對于一個變數的因子水平被省略或 "不可見",你過去可以在scale_color_manual中設定一個水平被設定為NA的命名向量,如下例所示:
df_test < - tibble(y = c(100。 -50, 20),
組 = c("A"。 "B", "C"),
標記= c("over average"。 " ", "低于平均水平"))
ggplot(data = df_test。 映射= aes(x = group, y = y。 color = Marker))
geom_bar(stat = "identity", 位置= position_dodge(width = 0。 9),尺寸= 1. 5,填充= "yellow")
scale_color_manual(values = c("over average" = "green3"。
"under average" = "red",
" " = NA))
不幸的是,這不再起作用了,而是將因子水平設定為灰色。 我想要的輸出是 "B "組沒有輪廓,因子水平不顯示在圖例中。 使用 "alpha "審美對我來說不起作用,因為在我的實際代碼中,我已經將alpha用于其他方面了。
預先感謝!
uj5u.com熱心網友回復:
你注意到最近有一些變化是正確的,這些變化是關于手動量表如何與它們的值一起作業,以及如何處理缺失或剩余的值。現在看來,使用一個命名的向量來設定比例限制是比較容易的。(參見4511, 4534, 4569)
還有兩種選擇:
使用這些比例變化,將比例值作為一個命名的向量提供,缺少你不希望包括的級別。這將給它一個NA值(默認為灰色),然后你可以用na.value = NA來洗掉它。
ggplot(df_test。 aes(x = group, y = y。 color = Marker))
geom_col(fill = "yellow", size= 1。 5)
scale_color_manual(values = c("over average" = "green3"。 "under average" = "red"),
na.value = NA)

第二個選項有點傻,但有時很有用(我在制作地圖時,不同的地理級別需要根據其在層次結構中的位置來繪制邊界)。同樣,由于顏色向量中缺少" "值,它不會被包含在該圖例中;然后放棄大小圖例。如果你需要圖例有厚的邊框,請使用其比例的override.ais引數。
library(ggplot2)
df_test <- tibble:: tibble(y = c(100。 -50, 20),
組 = c("A"。 "B", "C"),
標記= c("over average"。 " ", "低于平均水平"))
ggplot(df_test, aes(x = group, y = y。 color = Marker))
geom_col(aes(size = Marker)。 填充= "yellow")
scale_color_manual(values = c("over average" = "green3"。 "under average" = "red"))
scale_size_manual(values = c("over average" = 1。 5, "低于平均值" = 1. 5, " " = 0),
guide = guide_none())

uj5u.com熱心網友回復:
一種選擇是將值設定為transparent,而不是NA,并設定休息時間以省略不需要的因素水平,像這樣:
library(ggplot2)
library(tibble)
df_test < - tibble(y = c(100。 -50, 20),
組 = c("A"。 "B", "C"),
標記= c("over average"。 " ", "低于平均水平"))
ggplot(data = df_test。 映射= aes(x = group, y = y。 color = Marker))
geom_bar(stat = "identity", 位置= position_dodge(width = 0。 9),尺寸= 1. 5,填充= "yellow")
scale_color_manual(breakaks = c("bove average"。 "低于平均水平"),
string">"over average" = "green3"。
"under average" = "red",
" " = "transparent"))

uj5u.com熱心網友回復:
另一個選擇是對一個資料集進行子集,并將其置于現有的情節之上,也許?
這允許你只為該組的一個子集分配一個美學,因為條形圖實際上是兩個不同的層。
library(ggplot)
df_test < - tibble(y = c(100。 -50, 20),
組 = c("A"。 "B", "C"),
標記= c("over average"。 " ", "低于平均水平"))
ggplot()
geom_bar(data = df_test, aes(x = group, y = y),
stat = "identity",
position = position_dodge(width = 0。 9),
size = 1.5,
填充= "yellow")
geom_bar(data = (df_test %> % filter(group ! = "B")),
aes(x = group, y = y。 color = Marker),
stat = "identity",
position = position_dodge(width = 0。 9),尺寸= 1. 5,填充= "yellow")
scale_color_manual(values = c("over average" = "green3"。
"低于平均水平" = "紅色"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318897.html
標籤:
上一篇:將型別引數傳入自定義鉤子
