我想生成一个密集的图,其中某些部分突出显示..
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")
产生一个图表,显然但非常糟糕,不再接近我的需要!
答案 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")