Hallo,
Ich habe nur einen kleinen Teil der Lösung herausgefunden, indem ich mit diesem kurzen Skript durch die Tabelle iteriert habe (kann im Eingabefenster Anpassen> Skript hinzugefügt werden).
for (i= 1 , i <= N Row (), i++,
circle({:cx[i],:cy[i]},:cRad[i]);
);
Leider konnte ich keine Funktion finden, die den Status der Zeilenauswahl im lokalen GB-Filter dynamisch zurückgibt. Vielleicht möchten Sie in einem neuen Beitrag speziell nach diesem Thema fragen: Es muss einen Weg geben.
Tut mir leid, dass ich nicht viel geholfen habe.
Beste,
TS
Sieht so aus, als ob Sie tatsächlich 'Make Filter Change Handler ()' benötigen. Hier finden Sie ein Beispiel:
NamesDefaultToHere(1);
// Example table
dt = New Table( "Test Circles",
Add Rows( 20 ),
New Column( "dataset",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 5, 5, 5, 5] )
),
New Column( "x",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.1739, 0.4959, 0.3498, 0.4005, 0.6558, 0.5159, 0.7165, 0.7467, 0.6812,
0.902, 0.4638, 0.5823, 0.9902, 0.1275, 0.9176, 0.8493, 0.2, 0.2, 0.8,
0.8]
)
),
New Column( "y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.8721, 0.0109, 0.2249, 0.3135, 0.2398, 0.6867, 0.236, 0.146, 0.1684,
0.7458, 0.7862, 0.6482, 0.4948, 0.8169, 0.2477, 0.1575, 0.8, 0.2, 0.8,
0.2]
)
),
New Column( "cx",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.4985, 0.4985, 0.4985, 0.4985, 0.4985, 0.4985, 0.4985, 0.4985, 0.4985,
0.4985, 0.4985, 0.4985, 0.4985, 0.4962, 0.4962, 0.4962, 0.5, 0.5, 0.5,
0.5]
)
),
New Column( "cy",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.5027, 0.5027, 0.5027, 0.5027, 0.5027, 0.5027, 0.5027, 0.5027, 0.5027,
0.5027, 0.5027, 0.5027, 0.5027, 0.4958, 0.4958, 0.4958, 0.5, 0.5, 0.5,
0.5]
)
),
New Column( "cRad",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.4918, 0.4918, 0.4918, 0.4918, 0.4918, 0.4918, 0.4918, 0.4918, 0.4918,
0.4918, 0.4918, 0.4918, 0.4918, 0.489, 0.489, 0.489, 0.4243, 0.4243,
0.4243, 0.4243]
)
)
);
// Initial parameters for drawing a circle (used when there is no selection in the data filter)
cx = cy = cRad = 0.0;
// Graph Builder with locked scales . . .
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Lock Scales( 1 ),
Variables( X( :x ), Y( :y ) ),
Elements( Points( X, Y, Legend( 7 ) ) )
);
gbRep = Report(gb);
// Add graphics script for a circle
gbRep[FrameBox(1)] << Add Graphics Script(
2,
Description( "Circle" ),
Pen Color( "Blue" );
Circle( {cx, cy}, cRad );
);
// Add Local Data Filter . . .
ldf = gb << Local Data Filter();
// Add the filter column, and get a reference to the filter column object ('fc' is not actually used)
ldf << Add Filter( columns(:dataset));
fc = ldf << GetFilterColumn(:dataset);
// Function to get new circle parameters from the Local Data Filter selection
getCircleFromFilter =
Function( {x},
theseRows = ldf << getFilteredRows;
if(IsMatrix(theseRows),
// Assume it's safe to get the required values from just the first row in the current selection
cx = Column(dt, "cx")[theseRows[1]];
cy = Column(dt, "cy")[theseRows[1]];
cRad = Column(dt, "cRad")[theseRows[1]];
,
// No selection should give no visible circle
cx = cy = cRad = 0.0;
);
// Force the graphics script to be revaluated with the current parameters of the circle
gbRep[FrameBox(1)] << reShow;
);
// Assign the Filter Change Handler to the local data filter to do the work
rsh = ldf << Make Filter Change Handler(getCircleFromFilter);
@ian_jmp : Heilig ... wow.
Ich habe Probleme zu verstehen, was Sie getan haben. Es sieht so aus, als hätten Sie eine Funktion erstellt, mit der cx, cy und cRad festgelegt werden, wenn sich der lokale Filter ändert. Das ist echt cool.
Zwei kurze Anschlussfragen, da ich noch jsl lerne: (1) Wo lebt diese Funktion, wenn ich das Skript ausführe? Sitzt es nur irgendwo im RAM? Gibt es einen Ort, an dem ich ihn später finden kann? Eine Option "Liste der verfügbaren Benutzerfunktionen anzeigen ..." irgendwo? (2) Wenn ich "gb = dt << Graph Builder (...)" mache, gibt es eine Möglichkeit zu sehen, welche Objekte im gb-Objekt verfügbar sind? Ähnlich wie "dir (obj)" in Python?
Beeindruckend! Vielen Dank!!