ggplot2 中用于扩展图例标签的默认颜色
Posted
技术标签:
【中文标题】ggplot2 中用于扩展图例标签的默认颜色【英文标题】:Default colors in ggplot2 for extended legend labels 【发布时间】:2018-12-07 07:18:39 【问题描述】:我想参考一下问题: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ły czerwonawy lub róż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
我想把为不同物种制作的图表放在一起,然后进行比较。一个统一的传说对它来说是必不可少的。
所以我重复这个问题: 如何在所有图表上制作相同的图例,尽管数据范围不同,但使用默认颜色?
【问题讨论】:
不要使用scale_fill_manual
。
谢谢,但我应该使用哪个命令?
【参考方案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)
【讨论】:
不客气。能否请您投票以表明它对您有用? 我是新来的,不知道发生了什么。但如果你解释:为了英雄 - 一切;-)。 啊,我明白了,你需要 15 个声望点才能投票,但你只有 8 个。 感谢您的澄清。并为答案。 我仔细查看了图表,不幸的是其中有错误。因此,我完成了关于我的示例的问题。以上是关于ggplot2 中用于扩展图例标签的默认颜色的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化自定义多个图例(legend)标签之间的距离实战(例如,改变数据点颜色和数据点大小图例之间的距离)
R语言ggplot2可视化热力图(heatmap)自定义配置图例标签为百分比进行热力图颜色渐变显示(legend to display percentage sign)