Rの箱ひげ図に白黒を使用する必要があります。箱ひげ図を線と点で塗りつぶしたいと思います。例:
それができると思いggplot2
ますが、それを行う方法が見つかりません。
よろしくお願いします。
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)