ggplot 中分类变量的排序

发布于 2024-11-05 09:49:58 字数 482 浏览 1 评论 0原文

美好的一天,我希望使用 ggplot2 生成一个图形,但不使用其对分类变量的默认排序(按字母顺序,在脚本中:字母),而是使用连续变量的关联值(在脚本中:数字)。

这是一个示例脚本:

library(ggplot2)
trial<-data.frame(letters=letters, numbers=runif(n=26,min=1,max=26))
trial<-trial[sample(1:26,26),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial<-trial[order(trial$numbers),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial.plot+stat_sort(variable=numbers)

最后一行不起作用。

Good day, I wish to produce a graphic using ggplot2, but not using its default sorting of the categorical variable (alphabetically, in script: letters), but using the associated value of a continuous variable (in script: number) .

Here is an example script:

library(ggplot2)
trial<-data.frame(letters=letters, numbers=runif(n=26,min=1,max=26))
trial<-trial[sample(1:26,26),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial<-trial[order(trial$numbers),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial.plot+stat_sort(variable=numbers)

The last line does not work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲凉≈ 2024-11-12 09:49:58

我非常确定 stat_sort 不存在,因此它无法按照您的预期工作也就不足为奇了。幸运的是,有一个 reorder() 函数,它可以根据第二个变量的值对分类变量的级别进行重新排序。我认为这应该满足您的要求:

trial.plot <- qplot( x = numbers, y = reorder(letters, numbers), data = trial)
trial.plot

在此处输入图像描述

I'm pretty sure stat_sort does not exist, so it's not surprising that it doesn't work as you think it should. Luckily, there's the reorder() function which reorders the level of a categorical variable depending on the values of a second variable. I think this should do what you want:

trial.plot <- qplot( x = numbers, y = reorder(letters, numbers), data = trial)
trial.plot

enter image description here

软糖 2024-11-12 09:49:58

如果您可以更具体地说明您希望它的外观,我认为社区可以改进我的答案,无论这是否是您正在寻找的:

qplot(numbers, reorder(letters, numbers), data=trial)

If you could be more specific about how you want it to look, I think the community could make improvements on my answer, regardless is this what you are looking for:

qplot(numbers, reorder(letters, numbers), data=trial)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文