Hola,
Estoy tratando de crear regiones de fondo para un gráfico donde las regiones representan áreas de cierta pendiente, como se muestra a continuación:

donde las regiones coloreadas se basan en el valor X/Y (ffc en el gráfico), que van de <1 a >10. Debido a que los rangos de X e Y varían con las observaciones, tengo las regiones o contornos mapeados usando la función de polígono y extrayendo los ejes resultantes min y max como entradas así:
Polígono ({0, 0}, {XMin, YMax}, {XMax, YMax}, {XMax, XMax * 10})
que funciona bastante bien. Mi problema es especificar las ubicaciones de texto que etiquetan cada región, todavía tengo que encontrar una manera de que el texto se mueva dinámicamente en función de los datos similares a los polígonos de modo que no tenga que entrar después del hecho y especificar las coordenadas exactas . Si alguien pudiera proporcionar ideas/recomendaciones para lograr algún tipo de texto dinámico dentro del gráfico, sería muy apreciado. Estoy seguro de que hay una mejor manera de hacer esto en lugar de usar las funciones de polígono y texto, pero parece que no puedo resolverlo, o si hay una buena manera de hacerlo. También me doy cuenta de que esto es puramente estético, pero he pasado demasiado tiempo tratando de encontrar una solución, así que estoy decidido a encontrar algo que funcione.
Gracias a cualquiera que proporcione una respuesta.
Supongo que encontraste la función Text() para dibujar las etiquetas de las regiones, pero solo tienes problemas con las matemáticas para colocarlas. A continuación se muestra un código que funciona razonablemente bien. Es posible que necesite un ajuste si la primera o la última etiqueta quedan recortadas por los bordes xmin/ymin, ya que este código no las prueba. Calculé la ubicación del texto como si estuviera en el ángulo medio de la región, pero es posible que desee codificarlos en su lugar. Es decir, tenga una lista de ángulos de texto que vaya junto con la lista de ángulos de parada para cada 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] )
);
);
);