No.22791 3Dグラフの作成方法について  【さくらとお城】 2019/08/09(Fri) 14:19

青木先生

 いつもお世話になっております。

 複数のチャンネルで計測した経時データを,plot3Dなどで図示しようとしているが,なかなかうまく行きません。

 データとエクセルで作成したグラフは添付ファイルのようになります。実際は,もっとチャンネルが多いので,ここでは2つだけ表示しています。

 きれいに図示できる方法を教えてください。

22791.zip


No.22792 Re: 3Dグラフの作成方法について  【青木繁伸】 2019/08/09(Fri) 20:20

3次元グラフはあまりよい表示方法ではないでしょう。
添付する図を見ても,二次元グラフ(折れ線グラフ)のほうが二つのデータの相違・同等がよく分かるでしょう。
確かにたくさん重なるとわかりにくいでしょうが,3次元折れ線グラフが重なったら,なにがなんだかわからなくなります。


No.22793 Re: 3Dグラフの作成方法について  【青木繁伸】 2019/08/09(Fri) 20:30

ggplot の例によくあるような,縦にずらっと折れ線グラフを並べるのはどうですか?
一つのグラフに,傾向の似通った複数の折れ線グラフを描けばなおよいかも。


No.22794 Re: 3Dグラフの作成方法について  【さくらとお城】 2019/08/10(Sat) 10:56

青木先生

 ご返事ありがとうございます。添付のようなグラフを考えていました。ちなみに,これが別ソフトで作ったもので,細かい設定などが大変で,Rでもできるかなと思って質問しました。

 先生のggplotの例も良さそうで,試してみます。


No.22808 Re: 3Dグラフの作成方法について  【さくらとお城】 2019/08/22(Thu) 10:22

青木先生

 その後,色々と調べたけど,恥ずかしながら,なかなか先生のような図を描けません。ggplotの例を書いたコードを見せて頂いて宜しいでしょうか?

 どうぞよろしくお願い致します。

No.22809 Re: 3Dグラフの作成方法について  【青木繁伸】 2019/08/22(Thu) 12:50

私自身,ggplot は使わないので,細かな設定は知りません。
以下のようなプログラム例を示しておきますので,追加,修正の上ご利用ください。
ポイントは通常のデータフレームを時間とチャンネルとデータ値の3列から成るデータフレームに変換して,それを用いて折れ線グラフを描くということです。
set.seed(123)

m = 10
n = 50

# n x m 行列:列ベクトルがチャンネルごとの時系列データ

simdata0 = matrix(0, n, m)
for (i in 1:m) {
simdata0[, i] = cumsum(rnorm(n))
}

# チャンネルごとのデータを,
# time:時間(1:n),value:データ値,チャンネル名の,n x 3 のデータフレームとして rbind で縦に繋いだデータフレームに変換

simdata = NULL
for (i in 1:m) {
simdata = rbind(simdata, data.frame(time = 1:n, value = simdata0[, i],
channel = paste0("x", i)))
}

g = ggplot(simdata, aes(x = time, y = value))
g = g + geom_line(aes(colour = channel), size = 0.5)
g = g + geom_point(aes(colour = channel), size = 1, alpha = 0.5)
g = g + facet_wrap(~channel, ncol = 2) # ncol で何列のグラフにするか
g = g + theme_classic() # または g = g + theme_bw() でも
g
以下のようなグラフになります(部分)


No.22810 Re: 3Dグラフの作成方法について  【さくらとお城】 2019/08/22(Thu) 12:53

青木先生

 早速のご返事ありがとうございます。先生のコードを勉強させていただきます。

● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る