【发布时间】:2021-03-04 21:13:37
【问题描述】:
我正在尝试使用 ggplot 绘制一个图,其中我在一个变量上刻面,并制作两个图(每个变量一个,显示类别 (y) 的值 (x),其中 y 以降序绘制相对于到每个组内的 X。这里的问题是,在每个组中,存在相同的 y 标签,这似乎弄乱了因子水平。
设置数据:
dummy_data <- tibble(
y_var = c('v1', 'v2', 'v3', 'v4', 'v5', 'v2', 'v6', 'v7', 'v4', 'v7'),
x_var = c(0.0629, 0.0631, 0.0654, 0.0657, 0.0676, 0.0693, 0.0707, 0.0728, 0.0733, 0.0868),
group_var = c("A", "B", "B", "A", "B", "A", "A", "A", "B", "B")
) %>%
group_by(group_var) %>% # group by the grouping variable
arrange(x_var, .by_group = TRUE) %>% # arrange the rows by x_var, within each group
mutate(y_var = factor(y_var, levels = y_var)) # change the y variable to a factor to retain order when plotting
dummy_data %>%
ggplot() +
geom_point(aes(x = x_var, y = y_var, color = group_var), size = 5) +
facet_wrap(~group_var, scales = 'free', dir = 'v')
如下所示的输出未按需要排序。
这可以通过使所有 y_var 值唯一(将组名添加到值)来纠正,但是这是不可取的,因为这会改变 y 轴标签(如下所示)
dummy_data %>%
mutate(y_var = str_c(y_var, group_var),
y_var = factor(y_var, levels = y_var)) %>%
ggplot() +
geom_point(aes(x = x_var, y = y_var, color = group_var), size = 5) +
facet_wrap(~group_var, scales = 'free', dir = 'v')
我想生成第二张图,而不必更改所有y_var 的值。谢谢!
【问题讨论】:
-
如果 B 组的因子值在 A 组中不存在,会发生什么情况?例如,A 组不存在 V3 和 V5,那么 B 组应该在哪里显示它们?