6

Rの箱ひげ図に白黒を使用する必要があります。箱ひげ図を線と点で塗りつぶしたいと思います。例:

ここに画像の説明を入力

それができると思いggplot2ますが、それを行う方法が見つかりません。

よろしくお願いします。

4

2 に答える 2

4

ggplot2シェーディングポリゴン(gris limitatipn)を使わないので難しいと思います。ただし、一部のプロット関数 ( ploygon 、 barplot など) で密度角度の引数によってパラメーター化されたベース プロットでシェーディング ライン機能を使用できます。

boxplotこの機能を使用しない問題。だから私はそれをハックします、というかbxp、boxplot で内部的に使用されるハックします。ハックは、bxp 関数に 2 つの引数 (角度と密度) を追加し、それらをxypolygon関数の呼び出しで内部的に追加することで構成されます (これは 2 行で発生します)。

my.bxp <- function (all.bxp.argument,angle,density, ...) {
    .....#### bxp code
    xypolygon(xx, yy, lty = boxlty[i], lwd = boxlwd[i], 
    border = boxcol[i],angle[i],density[i])  
    .......## bxp code after
    xypolygon(xx, yy, lty = "blank", col = boxfill[i],angle[i],density[i])      
    ......

}

ここに例があります。凡例がプロットに対応していることを確認するのは、完全にユーザーの責任であることに注意してください。そこで、凡例と箱ひげ図コードを再配置するコードを追加します。

ここに画像の説明を入力

require(stats)
set.seed(753)
(bx.p <- boxplot(split(rt(100, 4), gl(5, 20))))
layout(matrix(c(1,2),nrow=1),
       width=c(4,1)) 
angles=c(60,30,40,50,60)
densities=c(50,30,40,50,30)
par(mar=c(5,4,4,0)) #Get rid of the margin on the right side
my.bxp(bx.p,angle=angles,density=densities)
par(mar=c(5,0,4,2)) #No margin on the left side
plot(c(0,1),type="n", axes=F, xlab="", ylab="")
legend("top", paste("region", 1:5),
       angle=angles,density=densities)
于 2013-07-02T11:20:06.113 に答える