【问题标题】:combining Histogram bars in R在R中组合直方图条
【发布时间】:2020-05-24 12:13:35
【问题描述】:

我正在尝试使用基本 R 制作直方图。直方图在表示数据方面做得很好。但是,我想将右侧的几个条形图(来自 300,000+)(这是一张图片 enter image description here)组合成一个条形图来表示它们的值。

hist(TotalIncomeRural$D21, breaks ="sturges", labels = TRUE,
       xaxt='n', ylim=c(0,1350), col = "red")
axis(side=1, at=c(seq(0,1500000,100000)))

非常感谢任何帮助。

编辑: 我将演示我想对直方图做什么: 假设我有这个数据和历史函数:

x<-c(1,3,5,6,8,9,10,11,13,15,1,3,8,10,1,6,8,2,0, 2,5,3,8,5,5,1,0,0,0,0,3,6,5,8,10,12,16,18, 9, 8,1,1,1,0,5,5,5,6)
hist(x)

当我运行这个新的直方图时,我想将所有大于 10 的值合并到一个 bin 中来表示它们(我在这里附上一张图片)。

【问题讨论】:

  • 嗨 j_sands。提供minimal reproducible example 总是更好,这样您就可以帮助其他人帮助您!另外我不确定我是否理解您的问题:您想要不同尺寸的垃圾箱吗?
  • 可能有用吗? stackoverflow.com/q/37766893
  • 虽然其他答案为您展示了一些新功能,但您是否尝试过hist(x, breaks = c(0, 2, 4, 6, 8, 10, 20))?它准确地给出了(我认为)你在绘图中显示的内容。

标签: r ggplot2 plot histogram


【解决方案1】:

您可以指定断点和轴标签:

hist( TotalIncomeRural$D21, 
      breaks = c(0:3, 16) * 100000,
      ylim = c(0, 1350),
      xlim = c(0, 400000),
      freq = T,
      xaxt = "n",
      col = "red")

axis( side = 1, 
      at = (0:3 +.5) * 100000, 
      tick = F,
      labels = c("\n< $100,000\n ", 
                 "\n$100,000 -\n$200,000", 
                 "\n$200,000 -\n$300,000", 
                 "\n> $300,000\n "))

我试图像这样模仿你的原始数据:

set.seed(69)
TotalIncomeRural <- data.frame(D21 = rexp(2000)^1.3 * 100000)

如果您愿意,您可以通过更改轴的xlim 在右侧有一个大的宽条,但这样标签就不适合了(并且直方图的区域是错误的)

【讨论】:

  • 您能简单解释一下 (breaks = c(0:3, 16) * 100000,) 的工作原理吗?
  • 特别是,你为什么使用 16?所以我可以在创建其他直方图时使用它。谢谢
  • @j_sands 这就是我所有的随机数据。表达式 c(0:3, 16) * 100000 扩展为 (0, 100000, 200000, 300000, 1600000),这意味着休息的地方。我的随机数据中最高的数字大约是 1530000,所以我只需要确保最高突破高于此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
相关资源
最近更新 更多