2015 年は、データ解析手段として R をとことん使いこなさなければならない年になりそうです。いくつか頻繁に使うコードについて整理をしておく必要がありそうですので、以前本ブログで紹介したコードについて再整理して再び紹介します。今回はヒストグラムです。以前の記事は下記の通りです。
今回は、ファイル選択ダイアログを加えました。例に使用したデータは sample_hist.csv.zip からダウンロードできるようにしてあります。ご興味があれば、展開してご利用下さい。
require("tcltk")
require("KernSmooth")
###############################################################################
# chart.hist
###############################################################################
chart.hist <- function(tbl, x.val, g.title = "", x.label = "data") {
x <- sort(tbl[, x.val])
x.max <- max(x, na.rm = TRUE)
x.min <- min(x, na.rm = TRUE)
x.limit <- c(x.min, x.max)
h <- try(dpih(x))
if (!is.numeric(h)) {
h <- 10^round(log(range(x)[2] - range(x)[1]))
}
bins <- seq(x.min - h, x.max + h, by = h)
hist(x, breaks = bins, freq = FALSE,
main = g.title, xlab = x.label, xlim = x.limit,
col = "LightBlue", cex.main = 1, family = "mono")
points(x, dnorm(x, mean(x), sd(x), log = FALSE),
type='l', col = "Magenta", lwd = 1)
points(density(x), type = 'l', col = "MidnightBlue", lwd = 1)
}
###############################################################################
# open.png
###############################################################################
open.png <- function(imgName, picWidth = 640, picHeight = 400) {
png(filename = imgName, width = picWidth, height = picHeight, units = "px",
pointsize = 14, bg = "white", res = NA)
}
###############################################################################
# MAIN
###############################################################################
# READ CSV DATA
file.name<-tclvalue(tkgetOpenFile())
tbl.data <- read.csv(file.name, header = T, as.is = T)
# generate HISTOGRAM
head.x <- names(tbl.data)[1]
title.hist <- paste("SAMPLE (n = ", length(tbl.data[, head.x]), ")", sep = "")
label.x <- "Measurement"
chart.hist(tbl.data, head.x, title.hist, label.x)
# generate PNG FILE
open.png("sample_hist.png")
chart.hist(tbl.data, head.x, title.hist, label.x)
dev.off()
# ---
# END PROGRAM
Fedora での実行例です。
$ R R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet" ... (省略) ... 'q()' と入力すれば R を終了します。 > source("histogram.R") 要求されたパッケージ tcltk をロード中です 要求されたパッケージ KernSmooth をロード中です KernSmooth 2.23 loaded Copyright M. P. Wand 1997-2009 >
スクリプトを実行するとファイル選択ダイアログが表示されます。
画面に表示されるヒストグラムです。
カレントディレクトリに PNG 形式で保存されたヒストグラムです。





0 件のコメント:
コメントを投稿