2016-05-09 14 views
0

Ich möchte die dreieckige Region hier unter der Linie, die Sie sehen, so dass ich in den Vektor von X-Koordinaten und Y-Koordinaten übergeben, aber die Region nicht Schattierung inPolygon-Plot wird nicht in X- und Y-Koordinaten angezeigt

können Sie den Bereich unter der Linie rot schattiert bekommen? Der untere Teil der Region ist die x-Achse und der obere Teil ist die Linie. Vielen Dank. Hier

ist der Code:

x = c(0,1) 
    y = c(1,2) 
    x 
    y 
    plot(x,y) 
    polygon(x, y, col="red") 
+1

Sie passieren nur zwei x, y-Koordinaten zu Polygon, so wird es nur Schatten der „Fläche“ eingeschlossen innerhalb dessen, was effektiv eine gerade Linie -, die keinen Bereich hat Schatten. Siehe http://stackoverflow.com/questions/3494593/shading-a-kernel-density-plot-between-two-points für eine Erklärung, wie eine Kurve unter einer Kurve schattiert wird. – dww

+0

Mögliches Duplikat von [Schattierung eines Kerndichtediagramms zwischen zwei Punkten .] (http://stackoverflow.com/questions/3494593/shading-a-kernel-density-plot-between-two-points) – dww

Antwort

0

Ein Dreieck drei Punkte. Ihre Vektoren x und y beschreiben nur zwei Punkte.

polygon() Die Funktion kann jedem Dreieck oder höherer Ordnung Polygon zeichnen, aber man muss vollständig das Polygon definieren, indem alle seine Scheitelpunkte im x und y Argumente zu übergeben.

können wir das Problem lösen, indem den x und y Vektoren mit einem zusätzlichen Elemente zu ergänzen, die in dem fehlenden Eckpunkt füllt, wenn diese Vektoren an die Funktion polygon() geben.

Da Sie angegeben haben möchten Sie Schatten der Bereich unter die Linie, hier ist, wie ich dies tun würde:

  • Zuerst werde ich adressieren die zusätzliche y koordinieren, da es einfacher ist. Wir müssen lediglich das Minimum der bekannten y Koordinaten verwenden, für die wir min() verwenden können.
  • Für x, müssen wir kopieren Koordinaten x, die den Scheitelpunkt entspricht die höhere y-Koordinate, für die wir auf which.max()y verwenden und dann x Indizierung.

x <- c(0,1); 
y <- c(1,2); 
plot(x,y); 
polygon(c(x,x[which.max(y)]),c(y,min(y)),col='red'); 

plot