【发布时间】:2021-01-16 01:13:06
【问题描述】:
我正在尝试制作一个 ggplot,其中 y 轴上的分类变量的顺序是 1) 由另一个变量的值重新排序,然后 2) 将轴文本交换为另一个值,其中新的给定级别标签可以有多个来自原始变量的对应值。这是完成第一部分的可重现示例:
df <- data.frame(id = rep(letters[1:5], each=10),
id_2 = rep(c('group1', 'group2', 'group1', 'group3', 'group4'), each=10),
date = rep(seq(0, 9), 5),
start_point = rep(rnorm(5, 0, 1), each=10),
change_rate = rep(rnorm(5, 0, 1), each=10),
variance = rnorm(50, 0, 1))
df$fill_val <- df$start_point + df$date*df$change_rate + df$variance
ggplot(df, aes(x=date, y=reorder(id, fill_val), fill=fill_val)) +
geom_tile()
这会产生:
现在,我想用id_2 中的值替换 y 轴上的标签。请注意,您当然可以在这个玩具示例中手动执行此操作,如下所示:
ggplot(df, aes(x=date, y=reorder(id, fill_val), fill=fill_val)) +
geom_tile() +
scale_y_discrete(breaks=c('d', 'b', 'a', 'e', 'c'),
labels=c('group3', 'group2', 'group1', 'group4', 'group1'))
制作:
但是对于真实数据,我需要反复这样做,并且在某些图中y轴上可能有几十个值,所以不能像上面那样手动修复。
【问题讨论】: