2013-01-18 132 views
1

我知道,我们通常这样做:[R绘制频率分布

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

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

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

+0

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

回答

0

是这样的吗?

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) 
+0

是的,但实际情况会更复杂。 x将是一个包含很多数值的向量。我想绘制点的频率(如果0.1发生100次,绘制100点0.1以上) – Cathy

+0

非常感谢!它的工作:) – Cathy

+0

@Cathy与plot(table(x),lwd = 6)有什么不同? – agstudy

0

您可以用linetypelinewidth设置打下...

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

enter image description here

+1

@阿伦是... ...如何区分100和30 ..或500点...视觉上(假设点是相同的形状,没有抖动选项,没有aplha混合)。 – agstudy

+0

我以为和以前的研究一样。但我认为它会更好看是数字匹配频率/ \/\ 感谢您的帮助 – Cathy

0

对于较小的数字(数),可以使用stripchartmethod="stack"这样的:

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

但s tripchart不适用于700个点。


编辑:

从包装TeachingDemosdots()功能可能是你想要什么:

require(TeachingDemos) 
dots(x)