我有以下数据集(counts
):
Letter Freq
A 711
B 542
C 1268
D 134
E 11
F 860
G 745
<NA> 1135
我想用饼图来表示这些计数。 这就是我所做的:
countfrq <- ggplot(counts, aes(x="", y=Freq, fill=Letter)) + geom_bar(stat = "identity")
countfrq + coord_polar("y", start=0) +
labs(x="",y="", fill="Title") +
theme_minimal() +
scale_fill_manual(labels=c("A","B","C","D","E","F","G","Missing"), values=c("#D73027" ,"#F46D43" ,"#FDAE61" ,"#FEE08B", "#D9EF8B", "#A6D96A", "#66BD63", "#1A9850")) + theme(panel.grid=element_blank(),axis.text.x=element_blank(),legend.title=element_text(hjust=0.5,face="bold",size=16),legend.text=element_text(size=14))
这是我获得的:
由于我没有使用白色作为颜色,因此确认缺少代表缺失值(NA)的部分。我可以在代码或数据框中更改哪些内容以包含缺少的数据?
答案 0 :(得分:0)
我有一个问题,它是一个因子变量,它会吐出相同的错误,所以我将counts$Letter
转换为一个字符类。让我们首先重现这个问题:
library(ggplot2)
counts <- data.frame(Letter = c(LETTERS[1:7], NA),
Freq = c(711, 542, 168, 124, 11, 860, 745, 1135))
cols8 <- c("#D73027" ,"#F46D43" ,"#FDAE61" ,"#FEE08B", "#D9EF8B", "#A6D96A", "#66BD63", "#1A9850")
ggplot(counts, aes(x="", y=Freq, fill=Letter)) +
geom_bar(stat = "identity") +
coord_polar("y", start=0) +
labs(x="",y="", fill="Title") +
theme_minimal() +
scale_fill_manual(values=cols8) +
theme(panel.grid=element_blank(),
axis.text.x=element_blank(),
legend.title=element_text(hjust=0.5,face="bold",size=16),
legend.text=element_text(size=14))
现在要把它变成白色,我们只是重新编码NA以获得一些价值。请记住还要转换为字符类,因为因素不会将NA存储为唯一级别。
counts$Letter <- as.character(counts$Letter)
counts$Letter[is.na(counts$Letter)] <- "Missing"
ggplot(counts, aes(x="", y=Freq, fill=Letter)) +
geom_bar(stat = "identity") +
coord_polar("y", start=0) +
labs(x="",y="", fill="Title") +
theme_minimal() +
scale_fill_manual(values=cols8) +
theme(panel.grid=element_blank(),
axis.text.x=element_blank(),
legend.title=element_text(hjust=0.5,face="bold",size=16),
legend.text=element_text(size=14))