如何在 R 的条形图中对 X 轴进行排序?

Posted

技术标签:

【中文标题】如何在 R 的条形图中对 X 轴进行排序?【英文标题】:How can I sort the X axis in a Barplot in R? 【发布时间】:2010-10-08 07:14:46 【问题描述】:

我已经合并了如下所示的数据:

  (8.048,18.05] (-21.95,-11.95] (-31.95,-21.95]   (18.05,28.05] (-41.95,-31.95]
             81              76              18              18             12
    (-132,-122]     (-122,-112]     (-112,-102]     (-162,-152]  (-102,-91.95]
              6               6               6               5              5
(-91.95,-81.95]     (-192,-182]   (28.05,38.05]   (38.05,48.05]  (58.05,68.05]
              5               4               4               4              4
  (78.05,88.05]     (98.05,108]     (-562,-552]     (-512,-502]    (-482,-472]
              4               4               3               3              3
    (-452,-442]     (-412,-402]     (-282,-272]     (-152,-142]  (48.05,58.05]
              3               3               3               3              3
  (68.05,78.05]       (118,128]       (128,138]     (-582,-572]    (-552,-542]
              3               3               3               2              2
    (-532,-522]     (-422,-412]     (-392,-382]     (-362,-352]    (-262,-252]
              2               2               2               2              2
    (-252,-242]     (-142,-132] (-81.95,-71.95]       (148,158]  (-1402,-1392]
              2               2               2               2              1
  (-1372,-1362]   (-1342,-1332]     (-942,-932]     (-862,-852]    (-822,-812]
              1               1               1               1              1
    (-712,-702]     (-682,-672]     (-672,-662]     (-632,-622]    (-542,-532]
              1               1               1               1              1
    (-502,-492]     (-492,-482]     (-472,-462]     (-462,-452]    (-442,-432]
              1               1               1               1              1
    (-432,-422]     (-352,-342]     (-332,-322]     (-312,-302]    (-302,-292]
              1               1               1               1              1
    (-202,-192]     (-182,-172]     (-172,-162] (-51.95,-41.95]  (88.05,98.05]
              1               1               1               1              1
      (108,118]       (158,168]       (168,178]       (178,188]      (298,308]
              1               1               1               1              1
      (318,328]       (328,338]       (338,348]       (368,378]      (458,468]
              1               1               1               1              1

如何绘制这些数据,以便将 bin 从左侧的最负值排序到右侧的最正值?目前我的图表看起来like this。请注意,它根本没有排序。特别是第二个栏 (value = 76) 放置在第一个栏的右侧:

 (8.048,18.05] (-21.95,-11.95]
            81              76

这是我用来绘图的命令:

barplot(x,ylab="Number of Unique Tags", xlab="Expected - Observed")

【问题讨论】:

“Hi”和两个换行符,这取决于数据库中的存储可能等于更多字符。至少两个。 顺便说一句,谁让 Rich B 成为“可接受行为”的决定者。 是的,字符数基于 html,而不是 Markdown。今天早些时候,我编辑了一篇文章,只是为了在一些代码周围添加反引号,默认的编辑摘要是“在正文中添加了 13 个字符”。 `` 不是 13 个字符,但 是。 我们应该修改 Jeff 的博客文章说:“尊重原作者,或者尊重认为他知道原作者想要什么的编辑;或者尊重不喜欢你的更改和原作者随后批准您的更改。” 我也有同样的问题。有谁知道如何订购垃圾箱?根据 FryGuy 的评论,bin 是一种数学符号,可以在 R 中使用“cut”或“cut2”轻松创建。像 neversaint 一样,我试图在我的 x 轴上订购这些。当 bin 都是正数时,排序正确。但如果一个箱子有一个负数,那就不行了! – WGray 6 分钟前 【参考方案1】:

我真的很想帮助回答你的问题,但我得告诉你,我无法对你的数据做出正面或反面。我看到很多左括号,但没有右括号。数据看起来按每行底部的值降序排序。我不知道如何利用像 "(8.048,18.05]" 之类的值

我是否遗漏了一些明显的东西?你能举一个更简单的例子,说明你的数据结构不是一个因素吗?

我通常希望数据框或矩阵具有两列,一列用于 X,一列用于 Y。

看看这个排序示例是否有帮助(我在这里有点摸不着头脑)

tN <- table(Ni <- rpois(100, lambda=5))
r <- barplot(tN)

#stop here and examine the plot
#the next bit converts the matrix to a data frame,
#  sorts it, and plots it again

df<-data.frame(tN)
df2<-df[order(df$Freq),]
barplot(df2$Freq)

【讨论】:

他用的是一般数学范围记法,[]是闭区间,()是开区间。因此,对于他的第一个 bin:(8.048,18.05] = 81,这意味着对于范围 8.048 噢噢噢!谢谢你把它理顺。我没有看到 R 的输出看起来像那样,所以我很困惑。

以上是关于如何在 R 的条形图中对 X 轴进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

R绘制排序的条形图(Ordered Bar Chart)

在 r plotly 条形图中排序

如何按升序对条形图中的条形进行排序

根据ggplot2中最后一个分面网格的递减值对条形图的Y轴进行排序

对条形图中的 x 轴使用序数刻度 ('d3.scale.ordinal')

Plotly Python:在具有多个 Y 轴的分组条形图中对齐 X 轴