@JohnCLK がx
軸の値で色付けする方法を要求しているのを見て、これらのデモを試してみました。ggplot2
各デモでは、値または範囲に基づいてコード化されたダミー変数を使用して、他の変数で強調表示します。
したがって、最初に質問のようにデータを設定します。
pos <- rep(1:2000, 20)
xv <- c(rep(1:20, each = 2000))
yv <- (2000*20, 0.5, 0.1)
xv <- lapply(unique(xv), function(x) pos[xv==x])
to.add <- cumsum(sapply(xv, max) + 1000)
bp <- c(xv[[1]], unlist(lapply(2:length(xv), function(x) xv[[x]] + to.add[x-1])))
次に、 をロードggplot2
し、いくつかのユーティリティ関数を準備して、デフォルトのテーマを設定します:
library("ggplot2")
make.png <- function(p, fName) {
png(fName, width=640, height=480, units="px")
print(p)
dev.off()
}
make.plot <- function(df) {
p <- ggplot(df,
aes(x = bp,
y = yv,
colour = highlight))
p <- p + geom_point()
p <- p + opts(legend.position = "none")
return(p)
}
theme_set( theme_bw() )
縦軸の定義された範囲の値を強調するプロットを描く:
# highlight a horizontal band
df <- data.frame(cbind(bp, yv))
df$highlight <- 0
df$highlight[ df$yv >= 0.4 & df$yv < 0.45 ] <- 1
p <- make.plot(df)
print(p)
make.png(p, "demo_horizontal.png")
次に、軸上の定義された範囲内の値を強調表示するプロットを描画します。これx
は垂直バンドです。
# highlight a vertical band
df$highlight <- 0
df$highlight[ df$bp >= 38000 & df$bp < 42000 ] <- 1
p <- make.plot(df)
print(p)
make.png(p, "demo_vertical.png")
x
最後に、交互の垂直バンドを値で強調表示するプロットを描画します。
# highlight alternating bands
library("gtools")
alt.band.width <- 2000
df$highlight <- as.integer(df$bp / alt.band.width)
df$highlight <- ifelse(odd(df$highlight), 1, 0)
p <- make.plot(df)
print(p)
make.png(p, "demo_alternating.png")
お役に立てれば; とにかく良い練習になりました。