R 我在低X值时没有得到正确的直方图

R 我在低X值时没有得到正确的直方图,r,histogram,R,Histogram,我想做一个小数字集计数的柱状图。我用过: 2,3,3,4,4,4,5,5,5,6,6,6,7,8 2,2,2,2,2,3,3,3,4,4,4,5,5,6 2,3,3,4,4,4,5,5,5,5,6,6,6,6,6 我只得到了2的正确图——对于1)和3),2和3类的计数都是正确的 > symm <- c(2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7, 7, 8) > hist(symm) > posskew <- c(2, 2

我想做一个小数字集计数的柱状图。我用过:

  • 2,3,3,4,4,4,5,5,5,6,6,6,7,8
  • 2,2,2,2,2,3,3,3,4,4,4,5,5,6
  • 2,3,3,4,4,4,5,5,5,5,6,6,6,6,6
  • 我只得到了2的正确图——对于1)和3),2和3类的计数都是正确的

    > symm <- c(2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 7, 7, 8) 
    
    > hist(symm)
    
    > posskew <- c(2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 6)
    
    > hist(posskew)
    
    > negskew <- c(2, 3, 3, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6)
    
    > hist(negskew)
    
    >symm历史(symm)
    >posskew hist(posskew)
    >负偏移历史(负偏移)
    

    我希望得到一个频率为1的条,对于对称的2类。相反,对于2类和3类,我的条会上升到3(负偏斜中也会出现类似情况)

    直方图用于连续数据。
    hist
    函数预期它将需要对数据进行分类,并为计算分类的算法提供了许多选项,您可以在
    ?hist
    中看到这些选项

    对于像您这样本质上是离散的数据,条形图更合适。这不会将值存储在一起

    par(mfrow = c(1, 3))
    barplot(table(symm))
    barplot(table(posskew))
    barplot(table(negskew))
    

    barplot
    本身可能会导致问题,因为您的数据实际上不是分类的。3和5之间的距离有意义,无论是否有4,这一意义都是相同的。如果没有任何4s,我上面显示的代码将把3放在5的旁边

    problem = c(2, 3, 3, 5, 5, 5, 6, 6, 7)
    barplot(table(problem))
    

    一个解决方案是将其分类,转换为
    因子
    ,并指定级别


    另一个修复方法是强制
    hist
    使用所需的中断

    hist(problem, breaks = seq(min(problem) - 1, max(problem)))
    

    这种方法同样适用于您的示例。但是,请注意,在这种情况下,x轴标签的用处要小得多
    hist
    仍在对数据进行装箱——每个栏都包含一个范围——我们刚刚强制每个箱子包含一个唯一的值。但左栏覆盖了从1到2的所有数据(数据中的一个
    2
    ),下一个栏覆盖了大于2到3的所有数据(数据中的2
    3
    s),等等。但只要看一下直方图,您可能会认为数据包括一个1和两个2,而实际上不包含1和一个2


    摘要:如果您的数据具有均匀分布的值(缺少一些值),并且您希望每个唯一值有一个条形图,
    barplot
    非常好。如果您的数据具有更多的唯一值,那么您需要条形图,然后您需要装箱,并且
    hist
    非常好。

    Sorry@MrFlick!我搜索了一下,没有找到答案(或者没有认出是答案)
    hist(problem, breaks = seq(min(problem) - 1, max(problem)))