- 1 名前:132人目の素数さん mailto:sage [2011/01/09(日) 17:31:49 ]
- R は統計計算とグラフィックスのための言語・環境です。
統計計算で重宝するデータ型や、複数要素を処理する演算や関数、 解析結果を表示するグラフィックなど、多彩な機能を提供します。 ●関連サイト The R Project www.r-project.org/ RjpWiki www.okada.jp.org/RWiki/ リンク集 www.okada.jp.org/RWiki/?%A5%EA%A5%F3%A5%AF%BD%B8
- 373 名前:名無しさん mailto:sage [2012/01/31(火) 10:47:16.46 ID:???]
- >>369
こんな感じじゃないの i <- (1:360)/360*2*pi cntr <- c(0.1,0.3) v <- c(94,78,78,97) arc <- cut(1:360,c(0,round(cumsum(v)*360/sum(v)),Inf)) plot(cos(i),sin(i),type="n",asp=1,axes=FALSE,xlab="",ylab="") l <- levels(arc) cols <- c("deepskyblue","dodgerblue1","dodgerblue3","brown1") lbs <- c("50代\n94人","40代\n78人","30代\n78人","10〜20代\n97人") cexs <- c(1.5,1.5,1.5,3) for (j in 1:4){ k <- c(i[arc==l[j]],max(i[arc==l[j]])+1/360*2*pi) polygon(c(cntr[1],cos(k)),c(cntr[2],sin(k)), col=cols[j]) text(mean(cos(k))/1.5,mean(sin(k))/1.5,lbs[j],cex=cexs[j]) }
- 374 名前:名無しさん mailto:sage [2012/01/31(火) 12:12:08.71 ID:???]
- >>370
ウジのグラフは、センターがずれてるだけじゃなくて「弧の長さの割合」も意図的に変えてるから、完全再現は無理みたいよw 参考 blog.kzfmix.com/entry/1327735061 そもそも、あんなおぞましいグラフを好んで描く必要ないと思うけど、こんなんでどう? library(grid) quartz(height=4, width=4) #png(filename = "fuji-pie.png", width = 360, height = 360, units = "px") num <- c(94, 97, 78, 78) distortion <- c(1, 1.2, 1, 1) # <- !! dist_num <- num * distortion cum <- c(0, cumsum(dist_num)) rad <- cum / sum(dist_num) * 360 / 180 * pi colors <- c("#0000FFAA", "#FF0000AA", "#000055AA", "#0000AAAA") labels <- paste(c("50ies¥n", "10~20ies¥n", "30ies¥n", "40ies¥n"), num, " ps", sep="") lab_cex <- c(1, 1.5, 1, 1) lab_col <- c("white", "yellow", "white", "white") div <- 200 # 円弧部分の分割数 dx <- 0 # 半径=0.5 として、x 方向への中心のズレ (-0.1 とかにすると、より強烈w) dy <- 0.1 # 半径=0.5 として、y 方向への中心のズレ for (i in 1:length(num)) { x <- c(0.5 + dx, 0.5 + 0.5 * sin(rad[i]), 0.5 + 0.5 * sin(seq(rad[i], rad[i+1], length.out=div)), 0.5 + 0.5 * sin(rad[i+1])) y <- c(0.5 + dy, 0.5 + 0.5 * cos(rad[i]), 0.5 + 0.5 * cos(seq(rad[i], rad[i+1], length.out=div)), 0.5 + 0.5 * cos(rad[i+1])) grid.polygon(x=x, y=y, gp=gpar(fill=colors[i])) grid.text(x=0.5 + 0.4 * sin((rad[i]+rad[i+1])/2), y=0.5 + 0.4 * cos((rad[i]+rad[i+1])/2), label=labels[i], gp=gpar(col=lab_col[i], cex=lab_cex[i])) } #dev.off() RjpWikiにも置いときました。 www.okada.jp.org/RWiki/?R%20%A4%C7%A5%A8%A5%F3%A5%BF%A5%E1#nf026bb6
|

|