Desplazamiento de etiqueta de gráfico de barras del generador de gráficosEl generador de gráficos puede mostrar etiquetas de valores en gráficos de barras; desafortunadamente, si los datos también se trazan en el gráfico de barras, las etiquetas quedan completamente oscurecidas.

Afortunadamente, es relativamente fácil reposicionar las etiquetas manualmente. Conseguir la alineación correcta es un poquito complicado y hacerlo más de una vez es relativamente frustrante. Incluso editar el script del gráfico para corregir las alineaciones es tedioso después de la segunda o tercera iteración de un gráfico. Con un poco de magia JSL podemos encontrar los marcos y segmentos de barras y ajustar automáticamente los conjuntos de etiquetas.
En el siguiente script se abre una tabla de datos de ejemplo y luego se ejecuta un script de gráfico, seguido de algunas instrucciones de formato.
Para utilizar este script, sustituya en la referencia de su tabla de datos o descomente "dt=current data table();" línea para permitir que el script se ejecute contra la tabla actual. El script del generador de gráficos es un ejemplo. Utilice RTM>Guardar script> en el portapapeles para obtener el script del generador de gráficos y luego péguelo en lugar del ejemplo.
names default to here(1);
//paste your data table reference here, or just use the current data table.
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
//dt=current data table();
obj=dt<<
//Paste your graph builder script here
Graph Builder(
Size( 518, 470 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Bar(X,Y,Legend( 4 ),
Error Interval( "Standard Error" ),
Label( "Label by Value" )),
Points( X, Y, Legend( 5 ) )),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(4,
Properties(0,{Fill Color( 0 ), Fill Pattern( "none" )},Item ID( "Mean", 1 )))}))
);
// End of graph builder script.
//Make a reference for the bar chart segments
fbi= N Items( (obj << xpath( "//FrameBox" )) );
for (ii=1, ii<=fbi, ii++,
frame = Report( obj )[FrameBox( ii )];
seg = (frame << Find Seg( "Bar Seg" ));
//Get variable used for the X axis
vars=obj<< Get Variables();
xx=vars[1];xx[1];
//Find the number of bars (or levels used to make bars)
Summarize( levels = By( eval(xx[1])));
Eval List( levels );
//Build an expression to change the offset
qq=expr(set label offset());
for (i=0, i<=nitems(levels)*fbi, i++, //Note there is a multipler, *fbi. This assumes each level is the same for each frame. Its kind of sloppy, might need to just replace it with a fixed value.
rr={};
insert into (rr, i); //This is the Bar number, starts with zero
insert into (rr,i); //This is the x offset, which is the same as the bar number
insert into(rr, 10); //This is the Y offset
insert into (qq, (rr));
);
//Make magic happen
eval(substitute(expr(seg<<QQ></QQ>
<P> </P>
<P>En una publicación de blog anterior, describí los pasos e incluí un script de automatización para agregar barras de error con anotaciones a gráficos de "Dynamite", gráficos de barras con una línea de intervalo. <A href="https://community.jmp.com/t5/Byron-Wingerd-s-Blog/One-Way-ANOVA-Figure-for-Scientists/ba-p/265156" target="_blank">https://community.jmp.com/t5/Byron-Wingerd-s-Blog/One-Way-ANOVA-Figure-for-Scientists/ba-p/265156</A></P><LINGO-TEASER id="lingo-teaser-777858" slang="en-US" mode="UPDATE"><P>¿Sus datos oscurecen sus etiquetas de datos?</P></LINGO-TEASER><LINGO-LABS id="lingo-labs-777858" slang="en-US" mode="UPDATE"><LINGO-LABEL>Automatización y secuencias de comandos</LINGO-LABEL><LINGO-LABEL>Análisis y modelado de datos básicos</LINGO-LABEL><LINGO-LABEL>Exploración y visualización de datos</LINGO-LABEL><LINGO-LABEL>Compartir y comunicar resultados</LINGO-LABEL></LINGO-LABS>Re: Etiqueta de gráfico de barras del generador de gráficos corregidaHola @Byron_JMP , buen truco. Muy útil.
Alternativamente, se podrían agregar las etiquetas a un segundo elemento del gráfico de barras:
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 563, 522 ),
Summary Statistic( "Median" ),
Graph Spacing( 4 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Bar( X, Y, Legend( 4 ), Error Interval( "Standard Error" ) ),
Points( X, Y, Legend( 5 ) ),
Bar( X, Y, Legend( 6 ), Bar Style( "Float" ), Label( "Label by Value" ) )
)
);
A menudo tengo un problema relacionado: no hay espacio para etiquetas horizontales:

¿Existe una solución alternativa a través de JSL para rotar las etiquetas?
Re: Etiqueta de gráfico de barras del generador de gráficos arregladaParece que le gustaría rotar las etiquetas de esta manera:

No lo habría intentado sin tu pregunta. Hay algún JSL oscuro que le permite configurar las propiedades de la fuente Y el ángulo. Honestamente, nunca había visto esto hecho antes y se ve fantástico.
El JSL es este: Establecer fuente ( "" , 18 , "" , 90 ). La fuente es "", el tamaño es de 18 puntos, el formato es "" y el ángulo es 90. En el índice de secuencias de comandos, el ejemplo tiene la fuente especificada y el formato especificado, pero al reemplazarlos con "", parece usarse el valor por defecto. Cambiar el ángulo a -90 hace que el texto se lea de abajo hacia arriba.
names default to here(1);
//paste your data table reference here, or just use the current data table.
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
//dt=current data table();
obj=dt<<
//Paste your graph builder script here
Graph Builder(
Size( 518, 470 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Bar(X,Y,Legend( 4 ),
Error Interval( "Standard Error" ),
Label( "Label by Value" )),
Points( X, Y, Legend( 5 ) )),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(4,
Properties(0,{Fill Color( 0 ), Fill Pattern( "none" )},Item ID( "Mean", 1 )))}),
Dispatch( {}, "Graph Builder", FrameBox,
{DispatchSeg(
BarSeg( 1 ),
Set Font( "", 18, "", 90 )
)}
)
)
);
// End of graph builder script.
//Make a reference for the bar chart segments
fbi= N Items( (obj << xpath( "//FrameBox" )) );
for (ii=1, ii<=fbi, ii++,
frame = Report( obj )[FrameBox( ii )];
seg = (frame << Find Seg( "Bar Seg" ));
//Get variable used for the X axis
vars=obj<< Get Variables();
xx=vars[1];xx[1];
//Find the number of bars (or levels used to make bars)
Summarize( levels = By( eval(xx[1])));
Eval List( levels );
//Build an expression to change the offset
qq=expr(set label offset());
for (i=0, i<=nitems(levels)*fbi, i++, //Note there is a multipler, *fbi. This assumes each level is the same for each frame. Its kind of sloppy, might need to just replace it with a fixed value.
rr={};
insert into (rr, i); //This is the Bar number, starts with zero
insert into (rr,i); //This is the x offset, which is the same as the bar number
insert into(rr, 10); //This is the Y offset
insert into (qq, (rr));
);
//Make magic happen
eval(substitute(expr(seg<<QQ></QQ>
<P> </P>Re: Desplazamiento de etiqueta de gráfico de barras del generador de gráficos¡Frío! ¡asombroso!
gracias.
Re: Desplazamiento de etiqueta de gráfico de barras del generador de gráficosMmm...
Sólo me preguntaba cómo logré quitar las etiquetas de la parte superior del gráfico... sin ningún JSL.
-> ¡Ah: JMP17!
Entonces, como otra solución para el " Desplazamiento de etiqueta de gráfico de barras ":
vuelva a JMP 17 y la edad del usuario en el eje x y como Superposición :
// JMP 17!
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << new column("one", set each value(1));
dt << Graph Builder(
Variables( X( :age ), Y( :height ), Overlay( :age ), Color( :one ) ),
Elements(
Bar(
X,
Y,
Legend( 1 ),
Summary Statistic( "Mean" ),
Error Interval( "Standard Error" ),
Label( "Label by Value" )
),
Points( X, Y, Overlay( 0 ), Legend( 2 ) )
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
1,
Properties(
0,
{Fill Color( 0 ), Fill Pattern( "none" )},
Item ID( "1", 1 )
)
), Legend Model(
2,
Properties( 0, {Line Color( 0 )}, Item ID( "1", 1 ) )
)}
)
)
);

desventajas:
- Parece haber un error con las barras de error que se solucionó con JMP18.
- Ninguna de las otras características interesantes de JMP 18.
Re: Desplazamiento de etiqueta de gráfico de barras del generador de gráficosPensando en todos los usuarios de JMP sin experiencia en JSL...
En realidad, debería haber un control para la ubicación de las etiquetas directamente en la GUI.
Ah, hay un deseo del 2020 de @shampton82 con esta idea:
Control de etiqueta de datos del gráfico de barras del generador de gráficos
Re: Desplazamiento de etiqueta de gráfico de barras del generador de gráficos¡Gracias por vincular este blog y el elemento de la lista de deseos @hogi ! Si bien es genial que podamos agregar tantas funciones con JSL, una de las cosas más vergonzosas cuando se muestra JMP es no poder hacer cosas muy básicas con personalizaciones de gráficos que los usuarios pueden hacer en Excel (y que están tan acostumbrados). les sorprende que no puedas hacerlo fácilmente en JMP).
@Byron_JMP ¡Trabaja con el equipo de JMP para que esta gran personalización no esté basada en JSL!
esteban
Re: Desplazamiento de etiqueta de gráfico de barras del generador de gráficosaceptar.
Re: Desplazamiento de etiqueta de gráfico de barras del generador de gráficosAcabo de descubrir cuál es la diferencia entre JMP 17 y JMP18:
uno obtiene la etiqueta centrada en JMP18 cuando se cambia al modo Apilado .
Lamentablemente, este modo no es compatible con las barras de errores.
Entonces, hay que agregar las barras de error con otro gráfico de barras flotantes.
En total:

100% GUI - 0% secuencias de comandos.
aquí está el guión:
Ver más...Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 521, 429 ),
Variables( X( :age ), Y( :height ) ),
Elements(
Points( X, Y, Legend( 2 ) ),
Bar(
X,
Y,
Bar Style( "Stacked" ),
Summary Statistic( "Mean" ),
Label( "Label by Value" )
),
Bar(
X,
Y,
Bar Style( "Float" ),
Summary Statistic( "Mean" ),
Error Interval( "Standard Error" )
)
)
);
... Espero que esta publicación no se utilice para defender la nueva función de especificar la posición de la etiqueta .
Re: Desplazamiento de la etiqueta del gráfico de barras del generador de gráficosGracias por estas publicaciones. Me serán de utilidad.
Re: Desplazamiento de la etiqueta del gráfico de barras del generador de gráficos¿Un gráfico de mapa de calor también tiene un "seg" con el cual comunicarse?
No en esta lista:

¿Se llama Segmentación de Celdas de Mapa de Calor ?
myseg << get description = "Heatmap Cells";
-> no.
Re: Desplazamiento de la etiqueta del gráfico de barras del generador de gráficosSegmento Rect.
Desafortunadamente, Heatmap Seg = Rect Seg es bastante sordo 