我有下面的代碼,它產生一個餅圖和一個圖例。有沒有辦法讓表情符號和餅圖具有相同的對應顏色,因為目前表情符號是黑色的。我還希望洗掉圖例中的方形色塊,并在正確的表情符號旁邊出現男性和女性這兩個詞
library(tidyverse)
library(emojifont)
load.emojifont("OpenSansEmoji.ttf")
gender<-data.frame(`Gender`=c("Male","Female"),
`Proportion`=c(45,55), symbol=c("\UF182","\UF183"))
ggplot(gender, aes(x="", Proportion, fill=symbol, label=symbol))
geom_bar(width = 1, stat = "identity")
coord_polar("y", start=0)
xlab(NULL) ylab(NULL)
theme(legend.text=element_text(family='fontawesome-webfont'))
uj5u.com熱心網友回復:
實作所需結果的一種選擇是通過自定義鍵字形函式替換符號rect使用的默認 s geom_bar:
- 對于
draw_key_symbol我ggplot2::draw_key_text適應您的用例的自定義功能。 - 為了選擇正確的符號,我首先設定了顏色和符號的調色板,將顏色和符號分配給性別。然后根據填充顏色通過以下方式選擇正確的符號
symbols[names(match.arg(data$fill, pal))] - 而不是我在aes上
symbol映射并使用來設定顏色。Genderfillscale_fill_manual
注意:雖然我使用默認的 ggplot2 顏色,但下面的代碼也應該適用于性別的自定義顏色。
library(ggplot2)
library(grid)
library(emojifont)
load.emojifont("OpenSansEmoji.ttf")
gender <- data.frame(
`Gender` = c("Male", "Female"),
`Proportion` = c(45, 55),
symbol = c("\UF182", "\UF183")
)
# Color palette
pal <- scales::hue_pal()(2)
names(pal) <- c("Female", "Male")
# Symbol palette
symbols <- c("\UF182", "\UF183")
names(symbols) <- c("Female", "Male")
draw_key_symbol <- function(data, params, size) {
data$label <- symbols[names(match.arg(data$fill, pal))]
grid::textGrob(data$label, 0.5, 0.5,
gp = grid::gpar(col = data$fill,
fontfamily = "fontawesome-webfont",
fontsize = 3.88 * .pt))
}
ggplot(gender, aes(x = "", Proportion, fill = Gender))
geom_bar(width = 1, stat = "identity", key_glyph = "symbol")
scale_fill_manual(values = pal)
coord_polar("y", start = 0)
labs(x = NULL, y = NULL)

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/483756.html
下一篇:ggplot2中的Y軸位置
