任何基于 ggplot 中的类别重新着色或向轴标签添加指标的自动化过程?

问题描述 投票:0回答:1

我在 ggplots 中制作了一些条形图,并希望通过轴标签表明每个条形图都是更大类别的一部分。例如下面的情节:

我知道我可以使用美学手动为轴标签重新着色,或者改变数据框以调用特定颜色。 (有关示例,请参见这篇文章:ggplot color axis labels based on variable

但是 ggplots 中是否没有自动化过程来执行此操作并生成图例,类似于 fill/scale_fill?

r ggplot2 axis-labels
1个回答
0
投票

我们可以为此使用

ggside
包。可以在这里找到一个简单的教程。

包中的虚拟输入
gapminder

因为我没有你的数据框,我将使用

gapminder
数据集作为例子。

library(gapminder)

test_df <- gapminder %>% 
  group_by(country) %>% 
  slice_head(n = 3) %>% 
  arrange(country) %>% 
  head(n = 10)

# A tibble: 10 × 6
# Groups:   country [4]
   country     continent  year lifeExp      pop gdpPercap
   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
 1 Afghanistan Asia       1952    28.8  8425333      779.
 2 Afghanistan Asia       1957    30.3  9240934      821.
 3 Afghanistan Asia       1962    32.0 10267083      853.
 4 Albania     Europe     1952    55.2  1282697     1601.
 5 Albania     Europe     1957    59.3  1476505     1942.
 6 Albania     Europe     1962    64.8  1728137     2313.
 7 Algeria     Africa     1952    43.1  9279525     2449.
 8 Algeria     Africa     1957    45.7 10270856     3014.
 9 Algeria     Africa     1962    48.3 11000948     2551.
10 Angola      Africa     1952    30.0  4232095     3521.

ggplot

library(tidyverse)
library(ggside)

ggplot(test_df, aes(country, lifeExp, fill = as.character(year))) + 
  geom_col() + 
  geom_xsidetile(aes(xfill = continent), position = "fill") + 
  scale_xsidey_continuous(breaks = NULL) +
  ggside(x.pos = "bottom", draw_x_on = "main") + 
  theme_ggside_minimal()

创建于 2023-03-08 与 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.