我想提到一个问题:Force ggplot legend to show all categories when no values are present
我处于类似情况,但我希望颜色为默认颜色。
我应该怎么做?
已添加:
我仔细看了一下,结果发现不幸的是标签被更改了。
原始数据如下:
> str(mj)
'data.frame': 4393 obs. of 22 variables:
$ OS_Gatunek : Factor w/ 5 levels "Taraxacum ancistrolobum",..: 1 1 1 1 1 1 1 1 1 1 ...
$ PH_CreateDate : Factor w/ 15 levels "2016-04-06","2016-04-19",..: 2 2 2 2 2 2 2 2 2 2 ...
$ L_Ksztalt : Factor w/ 3 levels "lancetowaty",..: 3 2 3 3 2 2 3 3 2 3 ...
$ L_Symetria : Factor w/ 3 levels "duża","mała",..: 1 3 1 3 2 3 2 2 2 1 ...
$ L_Sfaldowanie : Factor w/ 2 levels "brak","obecne": 1 1 1 2 2 1 1 2 1 1 ...
$ KS_Ksz : Factor w/ 3 levels "hełmiasty","strzałkowaty",..: 2 3 1 1 3 1 1 1 1 1 ...
$ KS_KszWierz : Factor w/ 5 levels "spiczasty","tępo spiczasty",..: 3 1 5 2 2 1 1 2 3 4 ...
$ KS_KszKrGor : Factor w/ 10 levels "esowaty","odwrotnie esowaty",..: 7 7 10 1 7 10 10 10 10 10 ...
$ KS_KszKrDol : Factor w/ 10 levels "esowaty","odwrotnie esowaty",..: 9 7 10 7 7 9 9 10 9 9 ...
$ KS_Zab : Factor w/ 2 levels "brak","obecne": 1 1 1 1 1 1 1 1 1 1 ...
$ KS_TendTworzKlap : Factor w/ 2 levels "brak","obecna": 1 1 1 1 1 1 2 1 1 2 ...
$ KB_Ustawienie : Factor w/ 5 levels "odchylone","odgięte",..: 1 1 1 3 1 1 1 1 1 1 ...
$ KB_Zakonczenie : Factor w/ 5 levels "ostro spiczaste",..: 3 3 2 3 2 2 5 5 3 2 ...
$ KB_KsztKrawGornej: Factor w/ 10 levels "esowaty","odwrotnie esowaty",..: 10 1 10 7 7 10 10 10 10 1 ...
$ KB_KsztKrawDolnej: Factor w/ 10 levels "esowaty","odwrotnie esowaty",..: 9 7 10 7 2 10 9 2 9 1 ...
$ KB_ZabkKrGornej : Factor w/ 2 levels "brak","obecne": 2 1 1 1 1 1 1 2 1 1 ...
$ KB_ZabkKrDolnej : Factor w/ 2 levels "brak","obecne": 1 2 1 1 1 1 1 1 1 1 ...
$ KB_TendDoTwKlap : Factor w/ 2 levels "brak","obecna": 1 1 1 1 1 1 1 1 1 1 ...
$ I_Ksztalt : Factor w/ 3 levels "całe","postrzępione",..: 1 1 1 2 1 1 1 2 1 2 ...
$ I_Wyw : Factor w/ 2 levels "brak","obecne": 2 2 2 2 2 2 2 2 2 2 ...
$ I_SmolWyb : Factor w/ 2 levels "brak","obecne": 2 2 2 1 2 1 2 1 2 2 ...
$ N_Zabarwienie : Factor w/ 5 levels "cały czerwonawy lub różowy",..: 5 4 5 5 1 1 5 1 5 1 ...
示例饼图的代码如下(更改自How to create a pie chart with percentage labels using ggplot2?):
> data <- mj %>%
+ group_by(N_Zabarwienie) %>%
+ count() %>%
+ ungroup() %>%
+ mutate(per=`n`/sum(`n`)) %>%
+ arrange(desc(N_Zabarwienie))
> data$label <- scales::percent(data$per)
> ggplot(data=data)+
+ geom_bar(aes(x="", y=per, fill=N_Zabarwienie), stat="identity", width = 1)+
+ coord_polar("y", start=0)+
+ theme_void()+
+ geom_text(aes(x=1.3, y = cumsum(per) - per/2, label=label))
图表如下所示:
Pie chart 1 - first code - all species
如果我按照Benjamin Schlegel的建议更改代码,则:
> data <- mj %>%
+ group_by(N_Zabarwienie) %>%
+ count() %>%
+ ungroup() %>%
+ mutate(per=`n`/sum(`n`)) %>%
+ arrange(desc(N_Zabarwienie))
> data$label <- scales::percent(data$per)
> ggplot(data=data)+
+ geom_bar(aes(x="", y=per, fill=N_Zabarwienie), stat="identity", width = 1)+
+ coord_polar("y", start=0)+
+ theme_void()+
+ geom_text(aes(x=1.3, y = cumsum(per) - per/2, label=label)) +
+ scale_fill_discrete(labels = c("zielony do bladego bez czerwieni", "zewnątrz blady", "w środku różowy", "cały czerwonawy lub różowy", "błyszcząco purpurowy"), drop = FALSE)
此图表如下:
Pie chart 2 - second code - all species
在第一个图表中,最常见的是“całyczerwonawy lubróżowy”,表示所有带红色或粉红色(叶柄的颜色),在第二个图表中,“ zielony do bladego bez czerwieni”的意思是绿色至浅红色,无红色。区别是截然不同的。
第一个版本正确。
> summary(mj$N_Zabarwienie)
cały czerwonawy lub różowy na zewnątrz blady
2943 1
purpurowy z połyskiem w środku różowy
1 716
zielony do bladego bez czerwieni
732
当我更改数据范围时(仅针对一种物种),它仅显示图例的一部分(当前正在使用的图例)。
以下是所选物种(蒲公英)的示例图表(第一代码)。
Pie chart 3 - first code - Taraxacum ancistrolobum
这是同一组数据,但是是从第二个代码生成的。
Pie chart 4 - second code - Taraxacum ancistrolobum
这里第一个版本也是正确的。
> summary(jta$N_Zabarwienie)
cały czerwonawy lub różowy na zewnątrz blady
163 0
purpurowy z połyskiem w środku różowy
0 85
zielony do bladego bez czerwieni
163
我想将不同物种绘制的图表彼此相邻,然后进行比较。一个统一的传说是必不可少的。
所以我重复这个问题:
尽管数据范围不同,但具有默认颜色,如何在所有图表上创建相同的图例?
答案 0 :(得分:1)
scale_fill_manual
。如果您想要默认颜色,则可以使用scale_fill_discrete
(如果变量是离散的)或scale_fill_continuous
(如果变量是数字的)。
来自另一个问题的示例,其中指定了colos:
ggplot(data = dat, aes(x = Row, y = Col)) +
geom_tile(aes(fill = Y1), color = "black") +
scale_fill_discrete(labels = c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat7", "cat8"),
drop = FALSE)