Erstellung der Eigenschaft "Value Colors".Wie kann ich die Erstellung eines Satzes von Wertfarben für eine Datentabellenspalte skripten, ohne angeben zu müssen, was sie tatsächlich sind?
Ich frage, weil ich eine Anwendung habe, die erwartet, eine Eigenschaft "Wertfarben" zu finden, die einer ausgewählten Spalte zugeordnet ist, und abstürzt, wenn diese Eigenschaft nicht vorhanden ist. Ich möchte die eigentlichen Farben nicht selbst definieren müssen, weil sie irrelevant sind: Ich muss es nur tun sein eine Value Colors-Eigenschaft.
Ich kann dies sehr einfach interaktiv tun, indem ich einfach mit der rechten Maustaste auf die betreffende Spalte klicke und "Wertfarben" aus der Liste der Eigenschaften auswähle, woraufhin automatisch ein Standardsatz für mich definiert wird. Es ist im Wesentlichen diese Operation, die ich skripten muss - und ich vermute, dass die Lösung eine einzelne Codezeile sein wird, aber ich fürchte, ich kann sie einfach nicht sehen. Kann jemand helfen?
Betreff: Anlegen der Eigenschaft "Value Colors".Perfekt!Es ist immer besser, die Experten zu fragen, als zu versuchen, sie zu bekommen das Art der Konstruktion richtig 
Vielen Dank, Jim!
Betreff: Anlegen der Eigenschaft "Value Colors".Die ExprList wird nicht richtig erstellt.Sie müssen die Literalwerte in der Liste haben, keine berechneten Werte.Hier ist eine Möglichkeit, dies zu erreichen
// Start of script;
Names Default To Here( 1 );
Clear Log();
dt = Open( "$SAMPLE_DATA/Big Class.JMP" );
Summarize( NamesList = by( :Name ) );
Show( NamesList );
// Build the ExprLIst to be exactly what the Value Colors
// list needs to be
ExprList = {};
For( i = 1, i <= N Items( NamesList ), i++,
Eval(
Substitute(
Expr(
Insert Into( ExprList, Expr( __Names__ = __color__ ) )
),
Expr( __Names__ ), NamesList[i],
Expr( __color__ ), 2 + i
)
)
);
Show( ExprList );
// Then insert the resulting expression as the Value Colors property of the :Names column, and I should get what I want.
:Name << set property( "Value Colors", ExprList );
// The Value Colors property is correct;
Show( :Name << get property( "Value Colors" ) );Betreff: Anlegen der Eigenschaft "Value Colors".Vielen Dank an Peter und CWillden für Ihre Hilfe; leider bin ich immer noch nicht da - aber ich habe das Problem ein wenig herauskristallisieren können.Das angehängte Skript zeigt, wo ich jetzt bin: Wenn ich die letzte Schwierigkeit bezüglich der Erstellung einer Liste von Ausdrücken lösen kann, die ich dann in die Value Colors-Eigenschaft eingeben kann, sollte ich in der Lage sein, das zu bekommen, was ich brauche:
// Start of script;
clear log();
dt = Open( "$SAMPLE_DATA/Big Class.JMP" );
// The Value Colors property of the first column is initially empty;
show(:Name << get property("Value Colors"));
/*
I now want to create a Value Colors property for this column,
but I'd prefer to do it without having to identify all the names
beforehand if possible. Try CWillden's suggestion...
*/
:Name << set property("Value Colors", {});
// If I now try to color the cells by value, it DOES actually seem to have worked;
:Name << color cell by value(1);
// But the Value Colors property STILL only contains an empty list;
show(:Name << get property("Value Colors"));
/*
Unfortunately I do actually need a populated list - and it looks like I can't do it
without extracting the names explicity. Here's one way I think I COULD do it...
*/
summarize(NamesList=by(:Name));
show(NamesList);
/*
I now need to put those names into a list of expressions that follow the syntax
shown in PMRoz's post, and use that list to define the Value Colors property I need.
This next bit is WRONG - but you can see what I'm trying to do here.
What I need inside ExprList is a list of names, each coupled with an integer from 3 onwards
(to get some colors starting at red). I suspect I should probably be using the Substitute
and/or Eval Expr functions at this point, but I can't get the correct syntax.
*/
ExprList = {};
for(i=1, i<=nItems(NamesList), i++,
insert into(ExprList, expr(NamesList[i] = (2+i)))
);
show(ExprList);
// Then insert the resulting expression as the Value Colors property of the :Names column, and I should get what I want.
:Name << set property("Value Colors", ExprList);
// End of script.Betreff: Anlegen der Eigenschaft "Value Colors".Ich konnte eine BS-Wertfarbeneigenschaft in eine Spalte einfügen, indem ich Folgendes tat:
:Column 1 << Set Property("Value Colors",{});Scheint, als ob die Anwendung wirklich aktualisiert werden sollte, um robuster zu arbeiten.Seltsame Anforderung.
Betreff: Anlegen der Eigenschaft "Value Colors".Sie können JSL wie folgt verwenden:
column(dt, "Column 1") << Set Property( "Value Colors", {2 = 45, 3 = 46, 4 = 47} );
Der Weg, dies herauszufinden, ist
1. Erstellen Sie eine kleine Dummy-Tabelle mit einer einzelnen numerischen Spalte
2. Fügen Sie die manuell hinzu Wertfarben Attribut
3. Klicken Sie auf das kleine rote Dreieck neben dem Tabellennamen und wählen Sie aus Tabellenskript kopieren
4. Öffnen Sie ein JSL-Skriptfenster und fügen Sie den resultierenden Code ein.
Es wird in etwa so aussehen:
New Table( "Untitled 14",
Add Rows( 3 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Property( "Value Colors", {1 = -13977687, 2 = -3780931, 3 = -4222943} ),
Set Selected,
Set Values( [1, 2, 3] )
)
);