名前: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)
integer
numeric
logical
character
raw
(以前紹介。バイナリ)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
の対応が難しい…