在直方图上绘制曲线时出现轴限制问题

时间:2010-11-17 23:51:48

标签: r

新手在这里。我有一个脚本来创建有点像这样的图形:

png(Test.png)
ht=hist(step[i],20)
curve(insert_function_here,add=TRUE)

我基本上想在直方图上绘制分布曲线。我的问题是轴限制显然是由直方图而不是曲线设置的,因此曲线有时会超出Y轴限制。我玩过par(“usr”),但没有用。有没有办法根据直方图或曲线的最大值设置轴限制(或者,替代地,仅限曲线)?如果这改变了什么,这需要在for循环中完成,其中绘制了多个这样的图并且在一系列子图(par(“mfrow”))内。

3 个答案:

答案 0 :(得分:3)

受到其他答案的启发,这就是我最终做的事情:

curve(insert_function_here)
boundsc=par("usr")
ht=hist(A[,1],20,plot=FALSE)
par(usr=c(boundsc[1:2],0,max(boundsc[4],max(ht$counts))))
plot(ht,add=TRUE)    

它根据曲线或直方图的最高值来固定边界。

答案 1 :(得分:2)

你可以确定mx< - max(curve_vector,ht $ counts)并设置ylim =(0,mx),但我更怀疑代码看起来像是因为[]不是一个正确的参数传递成语和步骤不是R绘图功能,而是模型选择功能。所以我猜这是Matlab或其他成语中的代码。在R中,试试这个:

set.seed(123)    
png("Test.png")
ht=hist(rpois(20,1), plot=FALSE, breaks=0:10-0.1)  
# better to offset to include discrete counts that would otherwise be at boundaries
 plot(round(ht$breaks),  dpois( round(ht$breaks),   # plot a Poisson density
         mean(ht$counts*round(ht$breaks[-length(ht$breaks)]))), 
         ylim=c(0, max(ht$density)+.1) , type="l")
 plot(ht, freq=FALSE, add=TRUE)   # plot the histogram
 dev.off()

答案 2 :(得分:1)

您可以先绘制曲线,然后使用plot = FALSE计算直方图,并使用add = TRUE的直方图对象上的绘图功能将其添加到绘图中。

更好的方法是计算曲线的最高y值(根据曲线的性质可能有快捷方式)和柱状图中的最高柱,并将此值赋予ylim参数。绘制直方图。