裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

不適切なグラフ in ggplot2 その2

2011年03月02日 | ブログラミング

以下のようなグラフを描く関数を書いてみるが,仕様がダメダメ(ダメダメグラフの仕様がまともなわけがないので)なので,改造する気にもならない。

プログラムは以下のようなもの

hedo <- function(x, labels=NULL, col=NULL, acc=200)
{
    count <- table(x)
    pos <- count/max(count)*0.9+0.1
    n <- length(pos)
    theta <- seq(pi/2, -pi*3/2, length=acc)
    x <- cos(theta)
    y <- sin(theta)
    theta2 <- seq(pi/2, -pi*3/2, length=n+1)
    plot(x, y, type="n", col="gray80", asp=1, axes=FALSE, xlab="", ylab="")
    for (fraction in seq(0.1, 1.0, length=11)) {
        lines(x*fraction, y*fraction, col="gray80")
    }
    text(-strwidth("0")*0.7, seq(0.1, 1.0, length=11)+strheight("0")*0.3,
         sprintf("%3.1f", seq(0, 1, by=0.1 )), pos=4, cex=0.7)
    if (is.null(col)) col <- heat.colors(n, alpha=0.6)
    for (i in 1:n) {
        theta <- seq(theta2[i], theta2[i+1], length=acc)
        theta <- c(theta, rev(theta), theta2[i])
        fraction <- c(rep(pos[i], acc), rep(0.1, acc), pos[i])
        lines(c(0.1, 1.0)*cos(theta2[i]), c(0.1, 1.0)*sin(theta2[i]), col="gray80")
        polygon(cos(theta)*fraction, sin(theta)*fraction, col=col[i])
        mid <- (theta2[i]+theta2[i+1])/2
        text(cos(mid)*1.1, sin(mid)*1.1, paste(labels[i], count[i], sep=":"))
    }
}
#hedo(sample(10, 100, replace=TRUE))
hedo(x, labels=LETTERS[1:10])

 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 不適切なグラフ in ggplot2 | トップ | 2 のべき乗の先頭桁 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事