名前:niszet*
Rおじさん歴:2年目
趣味:R、楽器(お休み中)、ラズパイなど
普段は回路設計などしています
amplitude = 20*log10(Mod(Hf(f,R,L,C))) #amplitude in dB = 2olog(|H(f)|)
df <- data.frame(x = f, y = amplitude)
p1 <- ggplot(df,aes(x,y)) + geom_line(lwd = 1, col = 'blue') +
scale_y_continuous(breaks=seq(-65,25,by = 5)) +
labs(x = "f [Hz]", y = "|H(f)| [dB]") +
scale_x_log10(breaks = trans_breaks("log10", function(x) 10^x),labels = trans_format("log10", math_format(10^.x)))+
annotation_logticks(sides = "bt")
phase = Arg(Hf(f,R,L,C))/pi*180 #phase in deg = arg(H(f))
df <- data.frame(x = f, y = phase)
p2 <- ggplot(df,aes(x,y)) + geom_line(lwd = 1, col = 'blue') +
scale_y_continuous(breaks=seq(-180,180,by = 30)) +
labs(x = "f [Hz]", y = "Arg(H(f)) [deg]") +
scale_x_log10(breaks = trans_breaks("log10", function(x) 10^x),labels = trans_format("log10", math_format(10^.x)))+
annotation_logticks(sides = "bt")
grid.arrange(p1,p2)integernumericlogicalcharacterraw (以前紹介。バイナリ)complex (今回出てきます)## [1] 0+2i
## [1] 1+1i
characterの次に強い型ネットにも書籍にも情報がほとんどない…
ggplot2パッケージは直接complex型を扱えない
とIm()`で実部と虚部を取り出して対応plot()はcomplexを直接扱えるメモリをより多く使う
## 840 B
## 1.64 kB
## x y
## 1 3.000000 1-0.0000188i
## 2 3.366055 1-0.0000211i
## 3 3.776776 1-0.0000237i
## 4 4.237613 1-0.0000266i
## 5 4.754680 1-0.0000299i
## 6 5.334838 1-0.0000335i
data.frameを準備してた(手間)complex型を受け取ることで1つの列で2つのy軸を作成gridExtraパッケージでゲインと位相を同時に表示ggbode内部で変換する。scale_x_log10()を使う
breaks と minor_breaks で主目盛と副目盛をそれぞれ作成xlimを引数にとれるようにする。
c(6,4e3)のような値が与えられても副目盛線を調整する1E9とか \(1^9\) では見づらい
sitoolsパッケージを使って 1G のように表示させるgeom_logticks 、つまり layer です。ggplot2 パッケージの print.ggplot() 内の ggplot_build() でプロットする範囲を求めているggbode もこの結果を使っている。
print.ggbode() を実装したい。課題。facetの対応が難しい…