Ho bisogno di aiuto per risolvere un problema con lo script grafico: "Lo script grafico ha segnalato degli errori nel registro".Ho bisogno di aiuto per capire come fare riferimento agli assi di un framebox all'interno di uno script grafico.
Ecco cosa ho al momento:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
ob_group = Outline Box( "Testing Handles: " || (dt << Get Name) );
nw = New Window( (dt << get name), ob_group );
GB_wHandle = Function( {dt, X_parameter, Y_Parameter, groupByColumnString},
groupByColumn = Column( dt, groupByColumnString );
cb = Context Box(
box:exx = 60;
box:exy = 60;
box:gb = Graph Builder(
Size( 450, 350 ),
Ignore Platform Preferences( 1 ),
Show Control Panel( 0 ),
Variables( X( Column( X_Parameter ) ), Y( Column( Y_Parameter ) ), Overlay( groupByColumn ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
box:rgb = box:gb << Report;
box:framebox = box:rgb << XPATH( "//FrameBox" );
box:axis = box:rgb << XPATH( "//AxisBox" );
box:axisMax = box:axis << Get Max;
box:axisMin = box:axis << Get Min;
{box:exx, box:exy} = box:axisMin + 10;
box:framebox << Add Graphics Script(
"Front",
Description( "Handle" ),
//Script start
{Handle(
box:exx,
box:exy,
box:exx = x;
box:exy = y;
) ;
box:axisMax = box:axis << Get Max;
box:axisMin = box:axis << Get Min;
Pen Color( "Red" ) ; Line( box:axisMin, {box:exx, box:exy} ) ; }
);
);
Return( cb );
);
ob_group << Append( GB_wHandle( dt, "height", "weight", "sex" ) );
Ho bisogno di una finestra di contesto perché ho più GB nella stessa finestra con handle indipendenti.
Tutto funziona correttamente finché non seleziono un punto sul grafico o una riga nella tabella e la escludo.
Poi la mia grafica scompare e nel registro compaiono i messaggi "Lo script grafico ha segnalato errori" e "Send prevede un oggetto Scriptable nell'accesso o nella valutazione di 'List', {/*###*/DisplayBox[], DisplayBox[]}".
L'errore si verifica a causa delle seguenti righe:
box:axisMax = box:axis << Get Max;
box:axisMin = box:axis << Get Min;
Se li commento, non si verificano errori, ma in tal caso i valori minimi e massimi dell'asse non vengono aggiornati nel caso in cui l'utente modifichi la scala dell'asse.
Come posso risolvere il problema?
Automazione e scriptingOggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Questo dimostra il problema in modo molto più semplice
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
ob_group = Outline Box("Testing Handles: " || (dt << Get Name));
gb = dt << Graph Builder(
Size(450, 350),
Ignore Platform Preferences(1),
Show Control Panel(0),
Variables(X(Column("height")), Y(Column("weight")), Overlay("sex")),
Elements(Points(X, Y), Smoother(X, Y))
);
fbs = Report(gb) << XPATH("//FrameBox");
abs = Report(gb) << XPATH("//AxisBox");
show(fbs, abs);
dt << Select Rows(1) << Hide and Exclude(1) << Clear Select;
wait(1);
show(fbs, abs);
Quando si escludono le righe, il generatore di grafici viene ricalcolato e i riferimenti vengono eliminati.
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Un modo per risolvere questo problema potrebbe essere quello di aggiungere
box:axis = box:rgb << XPATH("//AxisBox");
alla tua sceneggiatura grafica
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Sì, immaginavo che si trattasse di un ridisegno, ma non riuscivo a capire come fare riferimento all'originale.
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Sì, ha funzionato. Per qualche motivo pensavo di non poter fare riferimento al report dall'interno dello script.
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"@jthi , un'altra domanda.
Supponiamo di voler racchiudere l'aggiunta di uno script grafico in una funzione, che a sua volta aggiungerà tale script a un Graph Builder.
Questa funzione dovrebbe solo ricevere un riferimento a una Display Box, quindi trovare la Framebox corrispondente e aggiungere lo script.
Attualmente, nella mia funzione devo racchiudere Graph Builder in una Context Box, in modo che gli elementi che creo (o gestisco nello specifico) tramite questo script siano indipendenti dagli altri elementi presenti in altri Graph Builder nella stessa finestra.
Domanda: quale riquadro di visualizzazione devo fornire alla funzione per salvare il contesto isolato? Nel file XML vedo EvalContextBox: è questo che è stato generato da "Context Box"?
Quale sarebbe la sintassi all'interno della funzione? Dato che la funzione non avrà un Context Box, dovrò omettere il namespace "box". Come posso limitare il contesto in questo caso?
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Non ho ben capito cosa vuoi passare alla funzione, solo un riferimento al generatore di grafici? Il generatore di grafici si troverebbe comunque all'interno del riquadro di contesto?
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Questa è una delle domande che mi pongo: cosa DOVREI passare alla funzione e se ho ancora BISOGNO della casella di contesto in questo caso.
Al momento la mia sceneggiatura è strutturata nel seguente modo:
//Preparing display boxes structure and window
lub = Lineup Box( N );
ob_group = Outline Box( "Report: " || (dt << Get Name) );
ob_group << Append( lub );
nw = New Window( (dt << get name), Window View("Invisible"), ob_group );
Quindi lavoro con la tabella dati per selezionare ciò che voglio rappresentare graficamente, ecc., e utilizzo questa funzione per creare una casella di contesto con Graph Builder all'interno, restituendo la casella di contesto:
GB_func = Function( {dt, X_parameter, Y_Parameter...},
cb = Context Box(
gb = Graph Builder(...
//
<GRAPH builder="" code="">
); box:rgb = gb << Report; //Doing some other stuff //Adding Graphics Script box:framebox = box:rgb << XPATH( "//FrameBox" ); box:framebox << Add Graphics Script(...) Return( cb ); );
</GRAPH>
Quindi prendo tutte le colonne che devo rappresentare graficamente e per ognuna creo i relativi riquadri di contesto con la piattaforma Graph Builder al suo interno:
For Each( {Y_Parameter, index}, Y_Parameters,
lub << Append( GB_func( dt, X_Parameter, Y_Parameter));
);
Quello che vorrei è una funzione a cui poter passare qualsiasi riquadro di visualizzazione o riferimento necessario per ogni singolo Graph Builder, e che aggiunga lo stesso script grafico che funzioni esattamente come funziona ora, indipendentemente dagli altri Graph Builder.
L'obiettivo finale è poter attivare/disattivare la grafica aggiuntiva sul grafico tramite il menu contestuale di Graph Builder: ci sono casi d'uso sia con che senza grafica. Rimuovere lo script della grafica non è un problema, per quanto ne so, sto cercando di capire come aggiungerlo in questo caso.
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Context Box è probabilmente la soluzione più semplice da implementare. Potresti anche memorizzare i valori "globali" in un namespace diverso da box (ad esempio, window, global, named, anonymous, ...), nel qual caso potresti eliminare context box e passare il riferimento al graph builder.
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"Cos'è la Display Box creata da Context Box? È EvalContextBox? Come faccio a specificare che le variabili presenti nello script grafico debbano essere limitate all'ambito di EvalContextBox? Basta usare il namespace box? Oppure esiste un modo per ottenere il riferimento al namespace associato a EvalContextBox?
Oggetto: Richiesta di assistenza per la risoluzione dei problemi dello script grafico: "Lo script grafico ha segnalato errori nel registro"È possibile utilizzare Namespace()
Names Default To Here(1);
nw = New Window("",
Context Box(
box:var = "",
box:tb = Text Edit Box("AA", <
<SET function=""></SET>
<P>Modifica il valore della casella di testo e riesegui l'ultima riga.</P>