13

リボン プロット (実際にはカテゴリ変数の複数のグループの線プロット) を作成したいのですが、3D スタイルで表示されます。これは次のようになります。

リボン プロットの例

したがって、次のサンプル データをリボン プロットとしてプロットしたい場合があります。

set.seed(10)
fun <- function(i) data.frame(person=rep(LETTERS[i], 26), 
    letter=letters, count=sample(0:100, 26, T))
dat <- do.call(rbind, lapply(1:10, function(i) fun(i)))

library(ggplot2) #a traditional 2-d line plot of the data
ggplot(data=dat, aes(x=letter, y=count, group=person, color=person)) + 
    geom_line()

これはRでどのように達成できますか? データを表示するためのより良い方法があるかもしれないことは知っていますが、現在の私の関心は、リボン スタイルのプロットを作成することです。

4

1 に答える 1

18

以下の例が正しい方向を示すのに役立つことを願っています。

# data
mat <- matrix(dpois(rep(1:20, 10), lambda=rep(10:1, each=20)), ncol=10)

# 2d line plot
matplot(mat, type="l", col="black", lty=1)

# 3d ribbon plots
par(mar = c(0, 1, 0, 1))
par(mfrow=c(1,2))
persp(z=mat[,rep(seq(ncol(mat)), each=2)], r=5, theta=320, phi=35, shade=0.5,
      border=NULL, col=rep(c("#808080FE","#00000000"), each=nrow(mat)-1))
persp(z=mat[,rep(seq(ncol(mat)), each=2)], r=5, theta=320, phi=35, shade=0.5,
      border=NA, col=rep(c("#808080FE","#00000000"), each=nrow(mat)-1))
par(mfrow=c(1,1))
par(mar = c(5,4,4,2)+.1)

Ribbon_example

ご覧のとおり、ここでの基本的な考え方は非常に単純です。マトリックスにプロットする値を整理し、マトリックス内の列を複製してペアにした後、を使用して値をプロットし、persp()透明色と不透明色を交互に切り替えます。ただし、特にborderパラメータをどうするかに関しては、まだ解決されていないトリッキーな詳細がいくつかあります。それらの詳細はあなたにお任せします。

お役に立てれば。

于 2012-10-07T12:43:01.663 に答える