So erstellen Sie dynamische Hintergrundregime im Graph BuilderHallo,
Ich versuche, Hintergrundregionen für ein Diagramm zu erstellen, in dem die Regionen Bereiche mit einer bestimmten Neigung darstellen, wie unten gezeigt:

wobei die farbigen Bereiche auf dem Wert X/Y (ffc im Diagramm) basieren und von <1 bis >10 reichen. Da die Bereiche von X und Y mit Beobachtungen variieren, habe ich die Regionen oder Konturen mit der Polygonfunktion abgebildet und die resultierenden Achsen min und max als Eingaben wie folgt gezogen:
Vieleck( {0, 0}, {XMin, YMax}, {XMax, YMax}, {XMax, XMax * 10} )
was gut genug funktioniert. Mein Problem besteht darin, die Textpositionen anzugeben, die jede Region beschriften. Ich muss noch einen Weg finden, bei dem sich der Text basierend auf den Daten ähnlich wie bei den Polygonen dynamisch bewegt, sodass ich nicht nachträglich hineingehen und die genauen Koordinaten angeben muss . Wenn jemand Ideen/Empfehlungen zum Erreichen einer Art dynamischem Text innerhalb des Diagramms geben könnte, wäre dies sehr willkommen. Ich bin sicher, dass es einen besseren Weg gibt, dies zu tun, als die Polygon- und Textfunktionen zu verwenden, aber ich kann es anscheinend nicht herausfinden, oder ob es überhaupt einen guten Weg gibt, dies zu tun. Mir ist auch klar, dass dies nur der Ästhetik dient, aber ich habe zu viel Zeit damit verbracht, eine Lösung zu finden, also bin ich entschlossen, etwas zu finden, das funktioniert.
Vielen Dank an jeden, der eine Antwort liefert.
GrafikSkripterstellungBetreff: Erstellen dynamischer Hintergrundregime im Graph BuilderIch nehme an, Sie haben die Funktion Text() gefunden, um die Regionsbeschriftungen zu zeichnen, aber Sie haben nur Probleme mit der Mathematik, um sie zu platzieren. Unten ist ein Code, der einigermaßen gut funktioniert. Es kann eine Anpassung erforderlich sein, wenn die ersten oder letzten Beschriftungen von den xmin/ymin-Kanten abgeschnitten werden, da dieser Code diese nicht testet. Ich habe die Textposition so berechnet, dass sie sich im mittleren Winkel der Region befindet, aber vielleicht möchten Sie diese stattdessen fest codieren. Das heißt, haben Sie eine Liste von Textwinkeln, die mit der Liste von Stoppwinkeln für jede Zone einhergeht.

xmin = 400;
xmax = 1800;
ymin = 0;
ymax = 3600;
New Window( "fills",
gb = Graph Box(
Frame Size( 500, 500 ),
X Scale( xmin, xmax ),
Y Scale( ymin, ymax ),
Marker(
Marker State( 8 ),
J( 20, 1, Random Normal( 1000, 50 ) ),
J( 20, 1, Random Normal( 1000, 300 ) )
)
)
);
framebox = gb[frame box( 1 )];
framebox << Add Graphics Script(
max diagonal = Max( xmax, ymax ) * Sqrt( 2 );
Fill Color( "red" );
stops = {0, 1, 2, 4, 10};
For( i = 2, i <= N Items( stops ), i++,
// fill wedge
Transparency( 0.07 * i );
a1 = ATan( stops[i] );
a0 = ATan( stops[i - 1] );
Polygon( {0, 0},
{Cos( a1 ) * max diagonal, Sin( a1 ) * max diagonal},
{Cos( a0 ) * max diagonal, Sin( a0 ) * max diagonal} );
// text label in center of wedge, constrained to graph bounds
text angle = Mean( a0, a1 );
xt = Cos( text angle ) * max diagonal;
yt = Sin( text angle ) * max diagonal;
scale to fit = Min( xmax / xt, ymax / yt ) * 0.9;
Transparency( 0.9 );
Text(
Center justified,
{xt * scale to fit, yt * scale to fit},
Char( stops[i - 1] ) || " < r < " || Char( stops[i] )
);
);
);