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 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る