密度图中的多边形?

时间:2011-10-16 20:32:42

标签: r plot

  

可能重复:
  Shading a kernel density plot between two points

我想生成一个密集的图,其中某些部分突出显示..

myd <- c(2,4,5, 4,3,2,2,3,3,3,2,3,3,4,2,4,3,3,3,2,2.5, 2, 3,3, 2.3, 3, 3, 2, 3)

我想创建密度图和颜色,大于3的部分到曲线的末端。

我的代码不成功

plot(density(myd),xlim=c(0,5))

polygon(c(3, myd, max(myd)),c(0,density(myd),0.6),col="tan")
polygon(c(3, myd, max(myd)),c(0,density(myd),0.6),col="tan")
Error in xy.coords(x, y) : 'x' and 'y' lengths differ

polygon(c(3, myd, max(myd)),c(0,myd,0.6),col="tan")

产生一个图表,显然但非常糟糕,不再接近我的需要!

1 个答案:

答案 0 :(得分:0)

您需要使用密度值,而不是原始数据。

dens <- density(myd)
polygon(c(3, dens$x[dens$x>3 & dens$x < 5], 5), c(0, dens$y[dens$x>=3 & dens$x <= 5], 0),col="tan")

这很接近,但由于默认的绘图参数超出5,你应该选择值可能超过6.默认的绘图行为将只是剪辑。你最好也可以在没有盒子或x轴的情况下进行绘图,然后将x轴置于0.这样你就会得到更像你期望的东西。试试这个......

dens <- density(myd)
plot(dens, xlim = c(0, 5), xaxt = 'n', bty = 'n')
axis(1, pos = 0)
polygon(c(3, dens$x[dens$x>3 & dens$x < 6], 6), c(0, dens$y[dens$x>=3 & dens$x <= 6], 0),col="tan")