极地 ggplot 的两个图例(其中一个是定制的)

2024-01-09

这是我的数据:

data <- structure(list(Indicator = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 3L, 6L, 6L, 6L, 6L, 4L, 4L, 5L, 5L, 1L, 1L, 1L, 2L, 2L, 
2L, 3L, 3L, 3L, 6L, 6L, 6L, 6L, 4L, 4L, 5L, 5L, 1L, 1L, 1L, 2L, 
2L, 2L, 3L, 3L, 3L, 6L, 6L, 6L, 6L, 4L, 4L, 5L, 5L, 1L, 1L, 1L, 
2L, 2L, 2L, 3L, 3L, 3L, 6L, 6L, 6L, 6L, 4L, 4L, 5L, 5L, 1L, 1L, 
1L, 2L, 2L, 2L, 3L, 3L, 3L, 6L, 6L, 6L, 6L, 4L, 4L, 5L, 5L), .Label = c("Causality", 
"Climatechangeriskperceptions", "Currentadaptationoptions", "Fishingasalivelihoodactivity", 
"Governance", "Roleofshadowstateactors"), class = "factor"), 
    Village = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L), .Label = c("Andra", "lahapau", "Pelipowai", "Ponam", 
    "Tulu"), class = "factor"), Variables = structure(c(13L, 
    3L, 10L, 11L, 12L, 16L, 5L, 8L, 1L, 2L, 15L, 17L, 6L, 14L, 
    9L, 4L, 7L, 13L, 3L, 10L, 11L, 12L, 16L, 5L, 8L, 1L, 2L, 
    15L, 17L, 6L, 14L, 9L, 4L, 7L, 13L, 3L, 10L, 11L, 12L, 16L, 
    5L, 8L, 1L, 2L, 15L, 17L, 6L, 14L, 9L, 4L, 7L, 13L, 3L, 10L, 
    11L, 12L, 16L, 5L, 8L, 1L, 2L, 15L, 17L, 6L, 14L, 9L, 4L, 
    7L, 13L, 3L, 10L, 11L, 12L, 16L, 5L, 8L, 1L, 2L, 15L, 17L, 
    6L, 14L, 9L, 4L, 7L), .Label = c("alternativelivelihood", 
    "anyactorsinvolvedinsustainability", "Attributionfactors", 
    "discusswithelectedleaders", "Effortsdirectedtoreducerisks", 
    "fishercommunityinfluence", "Infrastructureeffectiveness", 
    "multiplicityofactors", "Occupationforchildren", "Reversibility", 
    "Riskasamajorconsideration", "Riskbeingaddressed", "Statusoffisheries", 
    "Timefishing", "Whatwasdone", "Whoisatrisk", "whowasinvolved?"
    ), class = "factor"), legend.var = structure(c(1L, 2L, 3L, 
    4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 
    17L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 
    14L, 15L, 16L, 17L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
    11L, 12L, 13L, 14L, 15L, 16L, 17L, 1L, 2L, 3L, 4L, 5L, 6L, 
    7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 1L, 2L, 
    3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 
    16L, 17L), .Label = c("a", "b", "c", "d", "e", "f", "g", 
    "h", "i", "j", "k", "l", "m", "n", "o", "p", "q"), class = "factor"), 
    score = c(1, 0.97, 1, 0.76, 0.794, 1, 0.71, 0.9, 0.5, 1, 
    1, 1, 1, 0.49, 0.72, 1, 0.7, 1, 1, 0, 0.67, 0.5, 1, 0.2, 
    1, 1, 0.7, 0.4, 0.5, 0.3, 0.67, 0.5, 0.7, 0.8, 1, 0, 0.46, 
    0.56, 0.375, 1, 0.13, 0.3, 0.5, 0.3, 0.3, 0.4, 0.6, 1, 1, 
    0.7, 0.8, 1, 0.86, 0.69, 0.51, 0.429, 1, 0.44, 0.3, 0.5, 
    0.6, 0.6, 0.7, 0.8, 0.4, 0.79, 0.8, 1, 1, 0.82, 0.85, 0.25, 
    0.226, 1, 0.18, 0.1, 1, 0.7, 0.3, 0.6, 0.3, 0.48, 0.16, 0.4, 
    0.8)), .Names = c("Indicator", "Village", "Variables", "legend.var", 
"score"), class = "data.frame", row.names = c(NA, -85L))

我制作了极坐标图,如下所示:

library(ggplot2)
ggplot(data, aes(x = legend.var, y = score, fill = Indicator), color='black') + 
  geom_bar(width = 1, alpha=0.5, stat="identity") + 
  scale_y_continuous() + 
  coord_polar()  + 
  theme( axis.ticks = element_blank()) + 
  facet_wrap(~Village, nrow=2, ncol=3) + 
  guides(colour = guide_legend(title.hjust = 0.5))

正如您在数据中看到的,列legend.var按列分组indicator。我想插入一个表格或第二个图例,将每个指标与legend.var and variables柱子。理想情况下,如果将其作为第二个图例插入,则包含在其中的独特项目legend.var列将具有与相应指示器相同的填充颜色。填充图例基于列indicator。插入的表/额外图例将包含列legend.var具有独特的字母和列variables以及相应字母的含义。然后,它们可以具有与相应的填充颜色相同的颜色indicator。我希望这一点很清楚。


这是一个使用的解决方案gtable:

library(ggplot2)
p <- ggplot(data, aes(x = legend.var, y = score, fill = Indicator), color='black') + 
  geom_bar(width = 1, alpha=0.5, stat="identity") + 
  scale_y_continuous() + 
  coord_polar()  + 
  theme( axis.ticks = element_blank()) + 
  facet_wrap(~Village, nrow=2, ncol=3) + 
  guides(colour = guide_legend(title.hjust = 0.5)) +
  theme(legend.position=c(0.85,0.25))

#create table
library(gridExtra)
tab <- tableGrob(unique(data[, c("legend.var", "Variables")]), 
                 show.rownames=FALSE, gpar.coretext=gpar(fontsize=10), 
                 gpar.coltext=gpar(fontsize=10, fontface='bold'),
                 gpar.corefill = gpar(fill = "grey90", col = "white"),
                 gpar.colfill = gpar(fill = "grey80", col = "white"))

#arrange grobs
library(gtable)
a <- gtable(unit(c(0.7, 0.3) ,c("npc")), unit(1, "npc"))
a <- gtable_add_grob(a, ggplotGrob(p),1,1)
a <- gtable_add_grob(a, tab,1,2)

#plot
grid.draw(a)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

极地 ggplot 的两个图例(其中一个是定制的) 的相关文章

随机推荐