Soluzione
Il contesto è tutto! Quindi, proprio come si potrebbe voler incorporare piccoli grafici a linee in un blocco di testo come sparklines per mostrarli nel contesto di una discussione, qualcuno potrebbe voler incorporare piccoli grafici a barre in una mappa per confrontare le variabili nel contesto della loro posizione. Qualcuno come il nostro @scwise , che ha aggiunto questo suggerimento in a lista dei desideri .
La soluzione può essere implementata utilizzando due recenti funzionalità JMP: i join virtuali e la possibilità di utilizzare le immagini nelle celle della tabella come indicatori. In combinazione con la capacità del Generatore grafico di creare una tabella dati con elementi grafici da un grafico composito, abbiamo tutti i pezzi necessari per risolvere questo puzzle. Il risultato finale assomiglia a questo:
US Elections 2008: Obama vs McCainElezioni USA 2008: Obama vs McCain
Dettagli di seguito:
dt1 = Open("$SAMPLE_DATA/US Election 2008.jmp");
// Create per state graphs
gb1 = Graph Builder(
Variables( Y( :Obama ), Y( :McCain, Position( 1 ) ), Page( :State ) ),
Elements( Bar( Y( 1 ), Y( 2 ), Legend( 8 ), Summary Statistic( "Max" ) ) ),
SendToReport(
Dispatch(
{},
"",
ScaleBox( 2 ),
{Min( -0.657608695652174 ), Max( 0.657608695652174 ), Inc( 0.25 ),
Minor Ticks( 0 )}
),
Dispatch(
{},
"",
ScaleBox( 3 ),
{Min( -0.657608695652174 ), Max( 0.657608695652174 ), Inc( 0.25 ),
Minor Ticks( 0 )}
),
Dispatch( {}, "400", LegendBox, {Set Title( "" )} )
)
);
// Save graphs as images to data table
dt2 = gb1 << Make into Data Table;
// Tip: save table to enable virtual join
dt2 << Save("$TEMP/ElectionPerStateGraph.jmp");
// Set virtual join between tables
dt2:State << Set Property("Link ID", 1);
dt1:State << Set Property(
"Link Reference",
Reference Table( "$TEMP/ElectionPerStateGraph.jmp" ));
// Use virtually joined graph column as source for markers
col = Column(dt1, "Graph[State]");
col << UseForMarker( 1 );
// Create map with a points overlay using graph markers
dt1 << Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( Shape( :State ) ),
Elements( Map Shapes( Legend( 2 ) ), Points( Legend( 3 ) ) )
);