2017-11-28 22 views
-1

polygon()関数でカーブの下の領域を塗りつぶす方法はありますか?R:Polygon()で曲線下の領域を塗りつぶす

私の知る限り、この記事で答えを理解するよう: Fill under line curveを、私は戻って、それは左下に起動するので、ダウンボタンの右に、カーブまで上昇し、polygon(c(min(x), x, max(x)), c(min(y), y, min(y))常にに動作することを前提とします最初まで

しかし、必ずしもそうではありません。時々、私はまだこの質問のようなグラフを得ます:Why polygon in R works with a full curve but not with a half curve?ここで、Rは単に線を引いてその下と上に塗りつぶします。

したがって、いつも動作するiput(または他の関数)は何ですか?

+0

がその質問への答えは何が問題なのですか?答えは単に入力データを 'x'で並べ替えることだけです(つまり' x'を '' x [order(x)] ''と 'y''をorder [y] )。これが必要な場合は[MRE](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example-aka-mcve-minimal-complete-and-ver)を入力してくださいそうではありません。 – MichaelChirico

+0

答えに間違いはありません。私はちょうど私がこの答えを読んだことを指摘したいと思っていました。それは批評家としてではなく、むしろ説明としてのものでした。 'order()'を使用すると、データは値が大きくなるように順序付けられます(y軸上では必要ではありません)。私はデータセットをアップロードすることができず、ランダムな値で再現できないので、残念ながら再現可能な例を作ることはできません... – 00koeffers

+0

申し訳ありませんが、私は誤字を犯しました。 'y [order(x)]' – MichaelChirico

答えて

0

多分na.rm = TRUEmin(y)に必要ですか?とにかく、ここでの機能は、埋めるためにどの水平境界線を指定するためにあなたの可能性を与えている:

fill_to_border <- function(f, from, to, y_border = 0, col = 1) { 
    curve_points <- curve(f, from, to) 
    polygon_x <- c(min(curve_points$x), curve_points$x, max(curve_points$x)) 
    polygon_y <- c(y_border, curve_points$y, y_border) 
    polygon_points <- list(x = polygon_x, y = polygon_y) 
    polygon(polygon_points, col = col) 
} 

fill(dnorm, -4, 0) 

enter image description here

関連する問題