如何解决在ggplot中多次打印类别无分组
data_set <- data.frame("Name" = c("Mr X","Mr Y","Mr Z","Mr X","Mr Z"),"score" = c(88,93,87,89,90))
我想创建一个列表图,按分数排序,但每个名称在需要时出现多次。以下代码不会产生所需的输出,因为我希望“X 先生”的两个分数和“Z 先生”的两个分数出现在不同的行上,而不是默认分组。什么是最干净的方法?
data_set$Name <- reorder(data_set$Name,data_set$score,min)
ggplot(data_set) + geom_point(aes(x = score,y = Name))
解决方法
如果您希望它们位于不同的行中,则需要创建不同的 y 轴值。试试:
library(dplyr)
library(ggplot2)
data_set %>%
group_by(Name) %>%
mutate(Name = paste0(Name,row_number())) %>%
ggplot() + geom_point(aes(x = Score,y = Name))
,
我通过添加一个没有重复的新因子并将标签映射到旧变量找到了这个解决方案:
data_set$ID <- as.factor(seq(1:nrow(data_set)))
ggplot(data_set) + geom_point(aes(x = Score,y = ID)) + scale_y_discrete(labels = function(x) data_set$Name[match(x,data_set$ID)])
这相当丑陋,但我想不出更简洁的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。