¿Cómo configuro el estilo de línea en JSL?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Me gustaría establecer un estilo de línea para un gráfico de líneas basado en una función de la columna que uso para superponer. Por ejemplo, si tengo datos en los que la columna que utilizo para superponer tiene valores "Ingresos_enero", "Beneficio_enero", "Ingresos_febrero", "Beneficio_febrero", quiero que cualquier gráfico de "Ingresos" tenga una línea discontinua y cualquier gráfico de "Beneficios" ser punteado
¿Puedo configurar el estilo de línea de esta manera usando JSL?
Re: ¿Cómo configuro el estilo de línea en JSL?También noté que el número no importa, al menos no en el ejemplo actual. No estoy seguro de a qué se refiere Legend Model. Graph Builder es bastante diferente de otras plataformas cuando se trata de secuencias de comandos.
Re: ¿Cómo configuro el estilo de línea en JSL?¡Fantástico, gracias!
Una cosa que todavía no entiendo: para mí, su secuencia de comandos solo funciona cuando cambio "{Modelo de leyenda (4...") a "{Modelo de leyenda{1...". ¿Sabes a qué se refiere este "Modelo Leyenda"? No encuentro documentación al respecto por ningún lado.
Re: ¿Cómo configuro el estilo de línea en JSL?Aquí hay una expansión del ejemplo de Jim que aplica condicionalmente el estilo de línea a los niveles de superposición al recorrer una lista de niveles.
En Graph Builder, cada nivel de superposición parece estar dirigido por un número que comienza en 0. El orden difiere del predeterminado si la columna Superposición tiene una propiedad Ordenación de valores. Por lo tanto, se debe tener en cuenta el orden de los niveles al crear la lista.
Nombres predeterminados hasta aquí ( 1 ) ;
// Tabla de datos de ejemplo
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
dt << Nueva columna ( "grupo" ,
Personaje ,
Fórmula (
Si (
: sexo == "F" & : altura < Col media ( : altura , : sexo ) , "F corto" ,
: sexo == "F" & : altura >= Col Media ( : altura , : sexo ) , "F alto" ,
: sexo == "METRO" & : altura < Col media ( : altura , : sexo ) , "M corto" ,
"M alto"
)
)
) ;
// Constructor de gráficos con superposición
SuperposiciónCol = Columna ( dt , "grupo" ) ;
GB = Generador de gráficos (
Tamaño ( 528 , 447 ) ,
Mostrar panel de control ( 0 ) ,
Variables ( X ( : edad ) , Y ( como columna ( YCol )) , cubrir ( grupo )) ,
Elementos ( Línea ( X , Y )) ,
) ;
// Aplicar estilo de línea a valores superpuestos que cumplan con los criterios
estilo = "Punteado" ;
criterios = "M" ;
Resumir ( gramo = por ( SuperposiciónCol )) ; // Lista de niveles de superposición (orden alfabético)
// Descomente debajo de la línea si la propiedad Ordenación de valores está configurada para la columna Superposición
// g=OverlayCol<
Para ( i = 1 , i <= N artículos ( gramo ) , i ++,
Si ( Contiene ( gramo [ i ] , criterios ) ,
GB << Enviar a informe (
Despacho ({} , "400" , ScaleBox ,
{ Modelo de leyenda ( 4 , Propiedades ( i - 1 , { Estilo de línea ( estilo )}))}
)
)
)
) ;
Re: ¿Cómo configuro el estilo de línea en JSL?
Hola Jim, gracias por la respuesta. Mi problema es que, en su ejemplo, le está diciendo explícitamente al script de qué gráfico cambiar el estilo de línea, en el Propiedades ( 0 , { Estilo de línea ( "Punteado" )} dominio. En el caso que me interesa, no sabré de antemano cuántos gráficos hay: podría haber 3, podría haber 30 y quiero cambiar el estilo de línea de cada uno según el valor de superposición.
¿Hay una forma más general de hacer ese comando, que seleccione algún grupo en lugar de elegir un gráfico específico para cambiar? O, por ejemplo, ¿podría encontrar de alguna manera el índice de los gráficos que me interesan y ejecutar un bucle que cambie el estilo de línea de cada uno?
Por ejemplo, si tengo tres gráficos, "Revenue_Jan", "Profit_Jan" y "Revenue_Feb" (y no sé de antemano cuántos gráficos de "Ingresos" habrá), ¿existe una buena forma de averiguarlo? ¿Que el gráfico 0 y el gráfico 2 comienzan con "Ingresos" y ejecutan un ciclo que cambia el estilo de ambos? ¿O hay alguna otra forma de hacer este tipo de función?
Re: ¿Cómo configuro el estilo de línea en JSL?El estilo de línea se puede configurar fácilmente en JSL.A continuación se muestra un script simple que le muestra una forma de cambiar el estilo de línea.
Nombres predeterminados hasta aquí ( 1 ) ;
dt = Abierto ( "$SAMPLE_DATA/Clase grande.jmp" ) ;
YCol = "altura" ;
// El valor de lstyle se puede establecer en función de
// la columna que se utiliza para la columna Y
// (es decir, If(YCol == "Beneficio", lstyle="Punteado", lstyle="Sólido"))
estilo = "Punteado" ;
Generador de gráficos (
Tamaño ( 528 , 447 ) ,
Mostrar panel de control ( 0 ) ,
Variables ( X ( : edad ) , Y ( como columna ( YCol ) ) ) ,
Elementos ( Línea ( X , Y , Leyenda ( 4 ) ) ) ,
Enviar a informe (
Despacho ( {} , "400" , ScaleBox ,
{ Modelo de leyenda ( 4 , Propiedades ( 0 , { Estilo de línea ( estilo )} ) )} )
)
) ;
