{"id":161,"date":"2014-10-09T11:47:24","date_gmt":"2014-10-09T09:47:24","guid":{"rendered":"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/?p=161"},"modified":"2017-05-23T15:43:20","modified_gmt":"2017-05-23T13:43:20","slug":"aire-entre-deux-courbes","status":"publish","type":"post","link":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/aire-entre-deux-courbes\/","title":{"rendered":"Calculer une aire entre deux courbes"},"content":{"rendered":"<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Aires\/headband-1.png\" alt=\"\" \/><\/p>\n<p>Dans ce post je montre comment utiliser des fonctions que j&rsquo;ai \u00e9crites pour <strong>calculer des aires<\/strong>:<\/p>\n<ul>\n<li><strong>entre deux courbes<\/strong><\/li>\n<li><strong>entre une courbe et une droite horizontale<\/strong><\/li>\n<\/ul>\n<p>Cela peut \u00eatre utile si vous travaillez sur des <strong>profils spatiaux<\/strong> qui \u00e9voluent au cours du temps (<strong>profil topographique<\/strong> par exemple) et que vous souhaitez calculer un <strong>bilan<\/strong> (<strong>s\u00e9dimentaire<\/strong> par exemple) entre ces profils.<\/p>\n<h1>Donn\u00e9es d&rsquo;exemple et script \u00e0 t\u00e9l\u00e9charger<\/h1>\n<p>Consid\u00e9rons le jeu de donn\u00e9es <a href=\"\/Rdata\/Aires\/data_aires.csv\">disponible ici<\/a>:<\/p>\n<pre><code>##      x1        y1       x2        y2\n## 1   1.2  9.507026 1.361827  4.302504\n## 2   2.3  5.560263 2.417920  8.182361\n## 3   2.9  8.612543 3.235110  8.820354\n## 4   4.1  7.246200 3.880343  3.957040\n## 5   4.8  6.759984 4.420467 10.003717\n## 6   6.0 10.886095 5.044396  9.149287\n## 7   7.1  6.964175 6.714750  4.536769\n## 8   7.7  7.736687 7.272723  4.530298\n## 9   9.0  9.254905 8.441166  5.371384\n## 10 10.2  8.767844 9.726646  5.634150\n<\/code><\/pre>\n<p>Dans la suite de ce post je vais utiliser une fonction que j&rsquo;ai appel\u00e9e <code>area_between<\/code>, qui fait partie du package <code>riverbed<\/code>, <a href=\"https:\/\/github.com\/lvaudor\/riverbed\/\">disponible ici<\/a><\/p>\n<p>Vous pouvez installer ce package sur R depuis le d\u00e9p\u00f4t en ligne GitHub, en ex\u00e9cutant les commandes suivantes:<\/p>\n<pre><code>plot(x1,y1,type=\"b\", \n     xlim=c(min(c(x1,x2)),max(c(x1,x2))),\n     ylim=c(min(c(y1,y2)),max(c(y1,y2))),\n     xlab=\"x\", ylab=\"y\")\npoints(x2,y2, type=\"b\", lty=2)\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Aires\/s\u00e9ries_de_donn\u00e9es-1.png\" alt=\"\" \/><\/p>\n<p>Le graphe suivant repr\u00e9sentant les deux s\u00e9ries de donn\u00e9es : (x1,y1) en trait plein, (x2,y2) en trait pointill\u00e9.<\/p>\n<h1>Comment utiliser la fonction area_between?<\/h1>\n<p>La fonction <code>area_between<\/code> a plusieurs options disponibles. On peut par exemple indiquer <code>plot=T<\/code> pour obtenir la repr\u00e9sentation graphique des s\u00e9ries consid\u00e9r\u00e9es et de l&rsquo;aire calcul\u00e9e. L&rsquo;option <code>type<\/code> permet de pr\u00e9ciser si l&rsquo;on souhaite afficher les surfaces dans le cas o\u00f9 une courbe est au dessus de l&rsquo;autre ou le contraire. L&rsquo;option <code>col<\/code> permet de pr\u00e9ciser de quelle couleur on veut afficher la surface entre les courbes.<\/p>\n<h2>Calculer l&rsquo;aire entre deux courbes:<\/h2>\n<pre><code>layout(matrix(1:3, nrow=3))\nresult=area_between(x1,y1,x2,y2, plot=T, col=c(\"blue\",\"red\"))\nresult=area_between(x1,y1,x2,y2, plot=T, col=\"blue\", type=\"upper\")\nresult=area_between(x1,y1,x2,y2, plot=T, col=\"red\", type=\"lower\")\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Aires\/aires_entre_courbes-1.png\" alt=\"\" \/><\/p>\n<ul>\n<li>L&rsquo;aire en bleu (positive; type \u00ab\u00a0upper\u00a0\u00bb) correspond aux zones o\u00f9 y1 est au dessus de y2.<\/li>\n<li>L&rsquo;aire en rouge (n\u00e9gative; type \u00ab\u00a0lower\u00a0\u00bb) correspond aux zones o\u00f9 y1 est en dessous de y2<\/li>\n<\/ul>\n<p><!-- --><\/p>\n<pre><code>result=area_between(x1,y1,x2,y2, plot=FALSE, col=c(\"blue\",\"red\"))\nresult$area\n\n## [1] 13.71704\n\nresult$area_lower\n\n## [1] -3.342189\n\nresult$area_upper\n\n## [1] 17.05923\n<\/code><\/pre>\n<p>Vous remarquez que l&rsquo;aire <code>result$area<\/code> est \u00e9gale au bilan <code>result$area_upper+result$area_lower<\/code>.<\/p>\n<h2>Calculer une aire entre une courbe et une droite horizontale:<\/h2>\n<p>La fonction <code>area_between<\/code> a aussi une option qui permet de comparer une s\u00e9rie de donn\u00e9es (x1,y1) \u00e0 une droite horizontale:<\/p>\n<p>Ici par exemple, on calcule l&rsquo;aire entre la courbe et la droite horizontale d&rsquo;\u00e9quation y=8.5.<\/p>\n<pre><code>result=area_between(x1,y1,h=8.5, plot=T, col=\"light blue\", type=\"lower\")\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Aires\/aires_entre_courbe_et_droite_horizontale-1.png\" alt=\"\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans ce post je montre comment utiliser des fonctions que j&rsquo;ai \u00e9crites pour calculer des aires: entre deux courbes entre une courbe et une droite horizontale Cela peut \u00eatre utile si vous travaillez sur des profils spatiaux qui \u00e9voluent au cours du temps (profil topographique par exemple) et que vous souhaitez calculer un bilan (s\u00e9dimentaire par exemple) entre ces profils. Donn\u00e9es d&rsquo;exemple et script \u00e0 t\u00e9l\u00e9charger Consid\u00e9rons le jeu de.. <a href=\"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/aire-entre-deux-courbes\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-161","post","type-post","status-publish","format-standard","hentry","category-tous-les-posts"],"_links":{"self":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/comments?post=161"}],"version-history":[{"count":11,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/161\/revisions"}],"predecessor-version":[{"id":581,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/161\/revisions\/581"}],"wp:attachment":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/media?parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/categories?post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/tags?post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}