Ich habe ein Diagramm, das von Hunderten von kategorialen Werten überlagert ist. Wenn der Benutzer damit arbeitet, macht es nur Sinn, 2, 3, maximal 5 Kategorien zu vergleichen, und der Benutzer tut dies über einen Datenfilter.
Aber nichts hindert den Benutzer daran, alle über 150 Kategorien auszuwählen. In diesem Fall werden sie alle in der Legende angezeigt, was die Fenster völlig zerstört. Da Sie in diesem Fall sowieso nichts auf dem Plot sehen könnten, bin ich damit einverstanden, die Anzahl der Legendenelemente einfach auf, sagen wir, 20 zu begrenzen, damit das Design nicht zerstört wird und es trotzdem seinen Zweck erfüllt. Gibt es eine Möglichkeit, die Begrenzung über JSL festzulegen?
OK ich habe es.
Berechnen Sie die Anzahl der Kategorien:
Categories = NItems(Associative Array (dt:CategoriesColumn));
Richten Sie ein, wie viele Legendenelemente Sie möchten:
LegendLevels = 3;
Erstellen Sie eine Liste, die so viele Elemente hat, wie Sie viele Kategorien haben, füllen Sie sie mit fortlaufenden Nummern für die Ebenen, die Sie anzeigen möchten, und "-1" für den Rest:
p = {};
For(i=0, i < Categories, i+=1,
if(i <= (LegendLevels-1), p = Insert(p, i), p = Insert(p, -1))
);Verwenden Sie diese Liste, wenn Sie Ihren Graph Builder in SendToReport() skripten:
Dispatch(
{},
"400",
LegendBox,
{Set Title( "Category" ), Legend Position( {5, Matrix(p)} ),
Position( Matrix(p) )}
)