【问题标题】:R plotting frequency distributionR绘制频率分布
【发布时间】:2023-04-08 15:26:01
【问题描述】:

我知道我们通常是这样做的:

x=c(rep(0.3,100),rep(0.5,700))
plot(table(x))

但是,我们只能在图中得到几个点或垂直线。

如果我想要0.3以上100个点,0.5以上700个点怎么办?

【问题讨论】:

  • 你的意思是你想要 700 个点而不是从 (0.5,0) 到 (0.5,700) 的线,而不是你想要的 (0.3,0) 到 (0.3,100) 的线100 个点?

标签: r plot


【解决方案1】:

这样的?

x <- c(rep(.3,100), rep(.5, 700))
y <- c(seq(0,1, length.out=100), seq(0,1,length.out=700))
plot(x,y)

编辑:(根据 OP 的评论)

在这种情况下,这样的事情应该可以工作。

x <- rep(seq(1, 10)/10, seq(100, 1000, by=100))
x.t <- as.matrix(table(x))
y <- unlist(apply(x.t, 1, function(x) seq(1,x)))
plot(x,y)

【讨论】:

  • 可以,但实际情况会更复杂。 x 将是一个包含大量数值的向量。我想以点为单位绘制频率(如果 0.1 出现 100 次,则在 0.1 以上绘制 100 个点)
  • @Cathy 和plot(table(x),lwd=6)有什么区别?
【解决方案2】:

您可以使用linetypelinewidth 设置躺着...

plot(table(x),lty=3,lwd=0.5)

【讨论】:

  • @Arun yes ...如何在视觉上区分 100 和 30..或 500.dots..(假设点的形状相同,没有抖动选项,没有 aplha 混合)。跨度>
  • 我之前的想法和 agustudy 一样。但我认为数字匹配频率会更好/\/\感谢您的帮助
【解决方案3】:

对于较小的数字(计数),您可以使用 stripchartmethod="stack",如下所示:

stripchart(c(rep(0.3,10),rep(0.5,70)), pch=19, method="stack", ylim=c(0,100))

但条形图不适用于 700 点。


编辑:

TeachingDemos 包中的 dots() 函数可能是您想要的:

 require(TeachingDemos)
 dots(x)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2014-07-08
    • 2011-08-20
    • 2014-07-15
    • 2019-06-27
    • 2022-06-27
    相关资源
    最近更新 更多