Rのsegments関数でグラフを塗りつぶす
やりたいのは↓こういうことだったりします。
やり方も上記リンク先に書いてあるので、ザッツオールです。
でも、領域を複数の台形に分けてpolygon関数で塗りつぶすという上記のやり方って、処理を頭の中で想像するのがけっこう難しい。
もっと単純に、縦棒をびっしり敷き詰めて塗りつぶすというやり方なら、頭の中で想像しやすいんじゃないかと思って、やってみました。
最初の3行は、前述のリンク先の流用でして、塗りつぶしのところだけ、線分を描画するsegments関数を使いました。segments(x1, y1, x2, y2) とやると、(x1,y1) から (x2,y2) まで線分を引いてくれるという関数です。引数がベクトルなら複数の線分を引いてくれます。
length=20 と少なくしてしまうと、この(あまり賢くない)やり方のボロが出てしまいます↓
なので、塗りつぶされている感じが出る程度まで、lengthを増やす必要があります。たくさんのグラフを描画するような場合は、このやり方は重くなってしまいそうですね。でも、グラフ1枚程度なら、1000本でも10000本でも大したことにはならないです。
塗りつぶしの方法としては理解しやすいでしょ。でも、やり方としてはpolygonで塗りつぶす方が賢いと思います。(実も蓋もない結論ですが・・・)
51. 低水準作図関数 | R-Source より |
でも、領域を複数の台形に分けてpolygon関数で塗りつぶすという上記のやり方って、処理を頭の中で想像するのがけっこう難しい。
もっと単純に、縦棒をびっしり敷き詰めて塗りつぶすというやり方なら、頭の中で想像しやすいんじゃないかと思って、やってみました。
最初の3行は、前述のリンク先の流用でして、塗りつぶしのところだけ、線分を描画するsegments関数を使いました。segments(x1, y1, x2, y2) とやると、(x1,y1) から (x2,y2) まで線分を引いてくれるという関数です。引数がベクトルなら複数の線分を引いてくれます。
length=20 と少なくしてしまうと、この(あまり賢くない)やり方のボロが出てしまいます↓
なので、塗りつぶされている感じが出る程度まで、lengthを増やす必要があります。たくさんのグラフを描画するような場合は、このやり方は重くなってしまいそうですね。でも、グラフ1枚程度なら、1000本でも10000本でも大したことにはならないです。
塗りつぶしの方法としては理解しやすいでしょ。でも、やり方としてはpolygonで塗りつぶす方が賢いと思います。(実も蓋もない結論ですが・・・)
コメント
コメントを投稿