Lösung
Kontext ist alles! So wie man winzige Liniendiagramme in einen Textblock einbetten möchte Sparklines Um sie im Kontext einer Diskussion anzuzeigen, möchten Sie möglicherweise winzige Balkendiagramme in eine Karte einbetten, um Variablen im Kontext ihres Standorts zu vergleichen. Jemand wie wir @scwise , der diesen Vorschlag in a Wunschzettel Eintrag .
Die Lösung kann mit zwei aktuellen JMP-Funktionen implementiert werden - virtuellen Joins und der Möglichkeit, Bilder in Tabellenzellen als Marker zu verwenden. In Kombination mit der Fähigkeit des Graph Builder, eine Datentabelle mit Diagrammelementen aus einem zusammengesetzten Diagramm zu erstellen, verfügen wir über alle zum Lösen dieses Puzzles erforderlichen Teile. Das Endergebnis sieht folgendermaßen aus:
US Elections 2008: Obama vs McCainUS Wahlen 2008: Obama gegen McCain
Details unten:
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 ) ) )
);