Ciao. Sto creando lo script di un grafico a barre nel generatore di grafici perché l'utilizzo di un grafico standard non elimina le barre vuote come fa il generatore di grafici. Sto consentendo l'uso di tipi di modellazione continua come fattore X. Lasciatemi spiegare come mi sto avvicinando a questo.
L'utente seleziona alcune colonne in base alle quali tracciare un grafico a barre. Creo il grafico utilizzando il generatore di grafici e la prima colonna selezionata. Quindi, se sono selezionate più colonne, entro e <
Qualcuno ha qualche idea su come posso farlo funzionare nel modo in cui lo voglio? Ecco una versione semplificata del mio script:
myWin = Column Dialog( FactorCol = Col List( "Multivariate Factor(s)" ) );
myFactor = myWin["FactorCol"];
myPlot = Graph Builder(
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( Eval( myFactor[1] ) ), Y( yCol ), Color( Eval( myColor ) ) ),
Elements( Bar( X, Y, Summary Statistic( "Std Dev" ), Label( "Label by Value" ) ) ),
SendToReport(
Dispatch(
{},
ScaleBox,
{Label Row( 1, {Automatic Tick Marks( 0 ), Show Major Ticks( 1 ), Lower Frame( 1 ), Tick Mark Style( "Long Divider" )} )}
)
)
);
//If there is more than one factor then need to add variables to the graph
If( N Items( myFactor ) > 1,
myRep = Report( myPlot )[Graph Builder Box( 1 )];
For( j = 2, j <= N Items( myFactor ), j++,
xcol = Column( dtmm, myFactor[j] );
If( xcol << Get Modeling Type == "Continuous",
//set a column property so I can change it back later
xcol << Set Property( "change", 1 );
xcol << Modeling Type( "Ordinal" );
);
myRep << Add Variable( {xcol, Role( "X" ), Position( 1 )} );
);
//now I have to adjust all the x-axis for the way I want it
For( j = 1, j <= N Items( myFactor ), j++,
Report( myPlot )[Axisbox( 1 )] << {Label Row(
j,
{Automatic Tick Marks( 0 ), Show Major Ticks( 1 ), Lower Frame( 1 ), Tick Mark Style( "Long Divider" )}
)}
);
);
In realtà, ho capito come farlo controllando passo dopo passo le variabili della casella di creazione del grafico. Se la colonna è continua, la cambio in ordinale e quando si aggiunge una variabile è necessario aggiungere un termine di posizione interna. Ecco la parte di script pertinente.
//graph builder can not add factors unless they are ordinal or nominal
//so if it is continuous, change to ordinal, and set a column property to change back later
If( xcol << Get Modeling Type == "Continuous",
xcol << Set Property( "change", {1} );
xcol << Modeling Type( "Ordinal" );
myRep << Add Variable( {xcol, Role( "X" ), Position( 1 ), Inner Position[i]} ),
,
myRep << Add Variable( {xcol, Role( "X" ), Position( 1 )} )
);Questo fa esattamente quello che voglio che faccia.
H
Grazie. Sì, so che creare uno script di stringhe è un'opzione, ma sono sempre riluttante a farlo. Ma in questo caso potrebbe essere necessario.Sono deluso che sia così.
migliore
H