在 barplot (ggplot2) 中向第三个变量添加另一个标签
Adding another label to third variable in barplot (ggplot2)
我的目标是创建一个可视化三个变量百分比的条形图;然而,我当前的图表以一种相当混乱的方式这样做。
一点上下文:我的每个变量都可以有两个可能值之一:
- 参考: null or overt
- 品种:SING或GB
- 注册:S1A或S1B
总的来说,数据框看起来像这样(多了几千行):
Reference Register Variety
1 null S1A SING
2 null S1A SING
3 null S1A SING
4 null S1A SING
5 null S1A SING
6 null S1A SING
我使用以下代码创建了下面的条形图:
data_raw <- read.csv("INPUT.csv", TRUE, ",")
data_2 <- data_raw %>%
count(Reference, Variety, Register) %>%
mutate(pct = n / sum(n),
pct_label = scales::percent(pct))
ggplot(data_2, aes(x= Reference, fill = Variety, y = pct)) +
geom_col() +
geom_text(aes(label = paste(pct_label, n, sep = "\n")),
lineheight = 0.8,
position = position_stack(vjust = 0.5)) +
scale_y_continuous(labels = scales::percent)
第三个变量,Register,由单色框中的两个独立值表示,例如 684/20.22% (S1B) 和 931/27.52% (S1A) ) 对于品种 GB。虽然我可以从我的数据中推断出这两个值中的哪一个代表 S1A 或 S1B,但我也需要从条形图中看出这一点。例如,是否可以在“684/20.22%”上添加一个标签,表示它是S1B值?
另一个明显的问题是,x 值“null”的数据包含的百分比非常低,难以阅读。我不确定处理此问题的最佳方法是什么。也许完全取消数字并仅依赖颜色是有意义的。
对于我的问题的任何建议或解决方案,我将不胜感激。我还是初学者,希望能更好地使用R进行数据分析。
如果您只想将 Register
添加到标签中,我认为只需将其添加到标签中即可:
...
geom_text(aes(label = paste(Register, pct_label, n, sep = "\n")),
...
但是我认为您可能想要寻找一些更美观的想法,例如 or making it semi-transparent 用于 Register
变量。
要抖动挤标签,可以看一下。
我的目标是创建一个可视化三个变量百分比的条形图;然而,我当前的图表以一种相当混乱的方式这样做。 一点上下文:我的每个变量都可以有两个可能值之一:
- 参考: null or overt
- 品种:SING或GB
- 注册:S1A或S1B
总的来说,数据框看起来像这样(多了几千行):
Reference Register Variety
1 null S1A SING
2 null S1A SING
3 null S1A SING
4 null S1A SING
5 null S1A SING
6 null S1A SING
我使用以下代码创建了下面的条形图:
data_raw <- read.csv("INPUT.csv", TRUE, ",")
data_2 <- data_raw %>%
count(Reference, Variety, Register) %>%
mutate(pct = n / sum(n),
pct_label = scales::percent(pct))
ggplot(data_2, aes(x= Reference, fill = Variety, y = pct)) +
geom_col() +
geom_text(aes(label = paste(pct_label, n, sep = "\n")),
lineheight = 0.8,
position = position_stack(vjust = 0.5)) +
scale_y_continuous(labels = scales::percent)
第三个变量,Register,由单色框中的两个独立值表示,例如 684/20.22% (S1B) 和 931/27.52% (S1A) ) 对于品种 GB。虽然我可以从我的数据中推断出这两个值中的哪一个代表 S1A 或 S1B,但我也需要从条形图中看出这一点。例如,是否可以在“684/20.22%”上添加一个标签,表示它是S1B值?
另一个明显的问题是,x 值“null”的数据包含的百分比非常低,难以阅读。我不确定处理此问题的最佳方法是什么。也许完全取消数字并仅依赖颜色是有意义的。
对于我的问题的任何建议或解决方案,我将不胜感激。我还是初学者,希望能更好地使用R进行数据分析。
如果您只想将 Register
添加到标签中,我认为只需将其添加到标签中即可:
...
geom_text(aes(label = paste(Register, pct_label, n, sep = "\n")),
...
但是我认为您可能想要寻找一些更美观的想法,例如 Register
变量。
要抖动挤标签,可以看一下