我有下面的代码,可以生成饼图和图例。有没有办法让表情符号和饼图具有相同的对应颜色,因为目前表情符号是黑色的。另外,我希望删除图例中的方形色块,并且术语“男性”和“女性”出现在正确的表情符号旁边
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'))
Run Code Online (Sandbox Code Playgroud)
实现所需结果的一种选择是通过自定义键字形函数来替换符号rect使用的默认 s :geom_bar
draw_key_symbol函数,我适应ggplot2::draw_key_text了您的用例。symbols[names(match.arg(data$fill, pal))]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)
Run Code Online (Sandbox Code Playgroud)