Ciao,
Sto cercando di creare regioni di sfondo per un grafico in cui le regioni rappresentano aree di una certa pendenza, come mostrato di seguito:

dove le regioni colorate si basano sul valore X/Y (ffc nel grafico), compreso tra <1 e >10. Poiché gli intervalli di X e Y variano con le osservazioni, ho mappato le regioni o i contorni utilizzando la funzione poligono e tirando gli assi risultanti min e max come input in questo modo:
Poligono( {0, 0}, {XMin, YMax}, {XMax, YMax}, {XMax, XMax * 10} )
che funziona abbastanza bene. Il mio problema è specificare le posizioni del testo che etichettano ciascuna regione, devo ancora trovare un modo tale che il testo si muova dinamicamente in base ai dati simili ai poligoni in modo tale da non dover entrare dopo il fatto e specificare le coordinate esatte . Se qualcuno potesse fornire idee/raccomandazioni su come ottenere una sorta di testo dinamico all'interno del grafico, sarebbe molto apprezzato. Sono sicuro che c'è un modo migliore per farlo piuttosto che usare il poligono e le funzioni di testo, ma non riesco a capirlo, o se c'è un buon modo per farlo. Mi rendo anche conto che questo è puramente estetico, ma ho passato troppo tempo a cercare una soluzione, quindi sono determinato a trovare qualcosa che funzioni.
Grazie a chiunque fornisca una risposta.
Presumo che tu abbia trovato la funzione Text() per disegnare le etichette della regione ma hai solo problemi con la matematica per posizionarle. Di seguito è riportato del codice che funziona abbastanza bene. Potrebbe essere necessario un aggiustamento se la prima o l'ultima etichetta vengono ritagliate dai bordi xmin/ymin poiché questo codice non li verifica. Ho calcolato che la posizione del testo si trova nell'angolo medio della regione, ma potresti invece voler codificare quelli. Cioè, avere un elenco di angoli di testo che va di pari passo con l'elenco di angoli di stop per ciascuna zona.

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] )
);
);
);