图形颜色的显示与我编写的代码不匹配。它只正确显示第一种颜色。当涉及到第二种颜色时,它只显示灰色,不管我输入什么颜色代码。
数据是这样的:
A tibble: 2 × 4
work_from_home n prop ypos
<lgl> <int> <dbl> <dbl>
1 NA 13437 55.0 27.5
2 TRUE 11009 45.0 77.5
我用这种方式做了一个饼图:
count_work_from_home$prop<-as.integer(count_work_from_home$prop)
mycols <-c("#EFC000FF", "#CD534CFF")
plotting_work_from_home<-ggplot(count_work_from_home, aes(x="", y=prop, fill=work_from_home))+
geom_bar(stat="identity", width=1, color="white")+
coord_polar("y", start=0)+
geom_text(aes(y=ypos, label=prop), color ="white")+
scale_fill_manual(values=mycols)+
theme_void()+
labs(title="Remote jobs vs.Non-remote jobs")
结果是:
我试着把“NA”变成其他值,看看灰色是因为“NA”。我是这样做的:
count_work_from_home <- count_work_from_home %>%
mutate(work_from_home=as.character(work_from_home)) %>%
mutate(work_from_home=replace_na(work_from_home,"Unknown"))
因此,tibble现在看起来像这样:
# A tibble: 2 × 4
work_from_home n prop ypos
<chr> <int> <dbl> <dbl>
1 Unknown 13437 55.0 27.5
2 TRUE 11009 45.0 77.5
这个结果就是我想要的。所以这是好事。然而,当我试图将“TRUE”改为“Yes”时-因此tibble看起来像这样:
# A tibble: 2 × 4
work_from_home n prop ypos
<chr> <int> <int> <dbl>
1 Unknown 13437 54 27.5
2 Yes 11009 45 77.5
我用同样的代码做了一个饼图-
plotting_work_from_home<-ggplot(count_work_from_home, aes(x="", y=prop, fill=work_from_home))+
geom_bar(stat="identity", width=1, color="white")+
coord_polar("y", start=0)+
geom_text(aes(y=ypos, label=prop), color ="white")+
scale_fill_manual(values=mycols)+
theme_void()+
labs(title="Remote jobs vs.Non-remote jobs")
结果是这样的:
**我不明白为什么标签45和54的位置现在改变了。“谁能告诉我,我做错了什么?”
1条答案
按热度按时间am46iovg1#
正如@Seth在评论中已经解释过的那样,问题是通过将
"TRUE"
类别的标签更改为"Yes"
,您更改了饼图切片的顺序,这是由Map到fill
(又名work_from_home
)的变量的顺序决定的。如果没有显式设置,则character
s或factor
s按顺序排列。然而,当你手动计算标签的位置时,
geom_text
不能解释这一点。当然,你可以交换ypos
的值来解决这个问题,一个不太容易出错的方法是将y = prop
也用于标签,但切换到position = position_stack(vjust=.5)
。这样,标签将按照与条形图(也称为饼图的切片)相同的顺序“堆叠”,其中vjust = .5
将使标签居中。如果你想要一个不同的顺序,那么将
work_from_home
转换为factor
,并显式设置级别的顺序:资料