Domanda difficile sul Generatore di graficiCiao JMPers,
Sto cercando di convincere un grande cliente a utilizzare JMP.Ora ho difficoltà a riprodurre una delle loro applicazioni in JMP.
Il primo problema che devo affrontare è che vorremmo mantenere i colori dagli stati di riga durante l'utilizzo dell'opzione Sovrapponi.
Abbiamo bisogno del grafico sopra (compresi i punti colorati blu e rosso) con linee di connessione tra i due punti di ciascuna parte (asse Y).
Posso ottenere la linea di connessione usando l'overlay, ma poi devo regolare manualmente i colori.
Allo stesso tempo, dovremo aggiungere più limiti di specifica superiore e inferiore al grafico.
Alla fine vorremmo avere qualcosa come il seguente grafico:
Sono stato in grado di produrre il grafico utilizzando più passaggi manuali (come Copia e incolla il contenuto del frame), ma l'obiettivo sarebbe generare questo grafico solo con gli strumenti di creazione di grafici standard, in particolare per mantenere l'interattività.
Sarei molto felice per qualsiasi tipo di consiglio.
Grazie,
Sebastian
Questa sarebbe la struttura dati data:
New Table( "Sample",
Add Rows( 20 ),
New Column( "Part ID",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
),
New Column( "X1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] )
),
New Column( "X2",
Character,
"Nominal",
Set Values(
{"cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold",
"cold", "medium", "medium", "medium", "medium", "medium", "medium",
"medium", "medium", "medium", "medium"}
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
:X2 == "cold", Random Normal() + 10,
:X2 == "medium", Random Normal() + 12,
Random Normal()
)
)
),
New Column( "Y_USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16]
)
),
New Column( "Y_LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] )
),
Set Row States(
[768, 768, 1280, 1280, 1280, 1280, 1280, 1280, 768, 768, 768, 768, 1280,
1280, 1280, 1280, 1280, 1280, 768, 768]
)
)
A proposito: il tuo collegamento a "JSL Syntax Highligher" sembra essere interrotto. Almeno finisco su una pagina vuota.
Re: Domanda complicata sul Generatore di graficiPuoi ottenere il risultato desiderato quasi senza script JSL. Innanzitutto crea un grafico a barre con barre di errore di intervallo. Quindi imposta la trasparenza delle barre su zero, in modo che svaniscano. Ora aggiungi una serie di punti facendo clic tenendo premuto Maiusc. Salva questo JSL nella finestra dello script.
L'unico bit di scripting è usare Col Maximum()/ Col minimo() funzioni per disegnare sulle linee di riferimento.

Graph Builder(
Size( 663, 468 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Y ), Y( :Part ID ) ),
Elements(
Bar( X, Y, Legend( 16 ), Error Bars( "Range" ) ),
Points( X, Y, Legend( 14 ), Jitter( 0 ) )
),
SendToReport(
Dispatch(
{},
"Y",
ScaleBox,
{Format( "Best", 12 ), Min( 5.64697504725641 ), Max( 16.37329465957 ),
Inc( 2 ), Minor Ticks( 1 ),
Add Ref Line( Col Minimum(:Y_LSL), "Dashed", "Red", "", 2 ),
Add Ref Line( Col Maximum(:Y_USL), "Dashed", "Red", "", 2 ),
Add Ref Line( Col Maximum(:Y_LSL), "Solid", "Blue", "", 2 ),
Add Ref Line( Col Minimum(:Y_USL), "Solid", "Blue", "", 2 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
16,
Properties( 0, {Fill Color( 2 ), Transparency( 0 )} )
)}
),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 4 )} )
)
);Re: Domanda complicata sul Generatore di graficiEcco uno script che crea ciò che desideri per un grafico di output. Ho aggiunto una tabella di dati di esempio, come hai fatto tu, ma con un'aggiunta. Il trucco per fare in modo che Graph Builder utilizzi gli stessi colori del colore dello stato della riga è in realtà impostare i colori del valore per Part_ID sui colori desiderati. Quindi Graph Builder usa quei colori per l'Overlay. Al codice del Generatore di grafici sono inoltre aggiunte le linee di riferimento degli assi. Ora, il codice che sto fornendo è un codice statico, ma JSL potrebbe facilmente generare il codice della piattaforma necessario leggendo la tabella dei dati e calcolando le linee di riferimento necessarie, quindi modificando semplicemente il codice di Graph Builder come richiesto. Infine, ho modificato manualmente i colori delle linee effettive, quindi ho salvato l'intero script di Graph Builder.. Dalla tua domanda, ho pensato che volessi vedere come ottenere i risultati desiderati. Così la mia risposta. La creazione del grafico da tabelle di dati generici non è inclusa nella mia risposta, ma può certamente essere script.
Names Default to Here( 1 );
New Table( "Sample",
Add Rows( 20 ),
New Column( "Part ID",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Property( "Value Colors", {1 = 3, 2 = 3, 3 = 5, 4 = 5, 5 = 5, 6 = 5, 7 = 5, 8 = 5, 9 = 3, 10 = 3} ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
),
New Column( "X1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] )
),
New Column( "X2",
Character,
"Nominal",
Set Values(
{"cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "medium", "medium", "medium",
"medium", "medium", "medium", "medium", "medium", "medium", "medium"}
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :X2 == "cold", Random Normal() + 10, :X2 == "medium", Random Normal() + 12, Random Normal() ) )
),
New Column( "Y_USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16] )
),
New Column( "Y_LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] )
),
Set Row States(
[768, 768, 1280, 1280, 1280, 1280, 1280, 1280, 768, 768, 768, 768, 1280, 1280, 1280, 1280, 1280, 1280, 768, 768]
)
);
Graph Builder(
Size( 509, 443 ),
Show Control Panel( 0 ),
Variables( X( :Y ), Y( :Part ID ), Overlay( :Part ID ) ),
Elements( Line( X, Y, Legend( 4 ), Row order( 1 ) ), Points( X, Y, Legend( 6 ), Jitter( 0 ) ) ),
SendToReport(
Dispatch(
{},
"Y",
ScaleBox,
{Min( 5.43667408790577 ), Max( 16.635593220339 ), Inc( 2 ), Minor Ticks( 0 ),
Add Ref Line( 16, "Dashed", "Red", "", 2 ), Add Ref Line( 15, "Solid", "Medium Dark Blue", "", 2 ),
Add Ref Line( 7, "Solid", "Medium Dark Blue", "", 2 ), Add Ref Line( 6, "Dashed", "Medium Dark Red", "", 2 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
4,
Properties( 0, {Line Color( 0 )} ),
Properties( 1, {Line Color( 0 )} ),
Properties( 2, {Line Color( 0 )} ),
Properties( 3, {Line Color( 0 )} ),
Properties( 4, {Line Color( 0 )} ),
Properties( 5, {Line Color( 0 )} ),
Properties( 6, {Line Color( 0 )} ),
Properties( 7, {Line Color( 0 )} ),
Properties( 8, {Line Color( 0 )} ),
Properties( 9, {Line Color( 0 )} )
), Legend Model(
6,
Properties( 0, {Marker( "FilledCircle" )} ),
Properties( 1, {Marker( "FilledCircle" )} ),
Properties( 2, {Marker( "FilledCircle" )} ),
Properties( 3, {Marker( "FilledCircle" )} ),
Properties( 4, {Marker( "FilledCircle" )} ),
Properties( 5, {Marker( "FilledCircle" )} ),
Properties( 6, {Marker( "FilledCircle" )} ),
Properties( 7, {Marker( "FilledCircle" )} ),
Properties( 8, {Marker( "FilledCircle" )} ),
Properties( 9, {Marker( "FilledCircle" )} )
)}
)
)
);

Re: Domanda complicata sul Generatore di graficiCiao,
Se fai clic con il pulsante destro del mouse sull'asse x, puoi aggiungere linee di riferimento che rappresentino i limiti.
Funzionerà?
Chris