我正在try 生成一个简单的条形图,将类别映射到正值和负值.我知道类别顺序是通过ggplot2中的系数设置的,但是,类别只对小于零的值是有序的,而对于大于零的值是无序的.我无法在剧情和图例中按正确的顺序排列类别.
请考虑以下数据和曲线图:
library(ggplot2)
library(dplyr)
library(tibble)
dat <- tribble(
~val, ~cat, ~label, ~order,
-10, "Negative 2", "A", 1,
-20, "Negative 1", "A", 2,
5, "Positive 1", "A", 3,
10, "Positive 2", "A", 4,
20, "Positive 3", "A", 5
) |>
mutate(cat = factor(cat, levels = unique(cat)))
dat |>
ggplot(aes(x = val,
y = label,
fill = cat)) +
geom_col(color = "transparent") +
geom_label(aes(label = order),
show.legend = FALSE,
color = "white",
size = 5,
position = position_stack(vjust = .5)) +
theme(legend.position = "bottom")
在这里,图例的顺序是正确的,但情节中的积极类别是颠倒的.订单应该是1, 2, 3, 4, 5
个,而不是1, 2, 5, 4, 3
个.我如何修复它才能使类别和图例都以正确的顺序排列?