essayez Variante=3 ; // 1-3 (aucune influence sur le timing) try Command=1; // 1 : Heatmap, 2 : Points (~ facteur 10 plus rapide) groupes = 500 ; variant = {"Continu", "Ordinal","Nominal"}[tryVariant] ; myCommand={Expr(Elements( Heatmap( X, Y, Legend( 17 ) ) )),Expr(Elements( Points( X, Y, Legend( 17 ) ) ))}[tryCommand] ; dt = Nouveau tableau( "dt" ); Eval( Eval Expr( New Column( "X", Numeric, Expr( variant ), Format( "Best", 12 ), Formula( Floor( Modulo( (Row() - 1), 10000 ) / 100 ) ) ) ) ); Eval( Eval Expr( New Column( "Y", Numeric, Expr( variant ), Format( "Best", 12 ), Formula( Modulo( (Row() - 1), 100 ) ) ) ) ); New Column( "group", Numeric, "Nominal", Format( "Best", 12 ), Formula( Floor( (Row() - 1) / 10000 ) ) ); Nouvelle colonne ("valeur", numérique, "continu", format ("meilleur", 12), formule (normal aléatoire (0, 0,001) + si (entier aléatoire (10000) < 5, 1, 0)), ); dt << Ajouter des lignes (10000 * groupes, à la fin ); New Window( "attendre ...", < tous les groupes seront tracés // surprenant : le filtre de données à l'intérieur du GraphBuilder ne montre pas cet effet... start1 = Today(); Eval(Eval Expr(New Window( "Data Filter Context Box", Data Filter Context Box( H List Box( dt << Data Filter( Local, Add Filter( colonnes( :group ), Where( :group == As List( 0 :: 4 )[1] ), Display( :group, N Items( 4 ), Find( Set Text( "" ) ) ) ) ), dt << Générateur de graphiques( Taille( 400, 400 ), Afficher le panneau de configuration( 0 ), Espacement des graphiques( 5 ), Variables( X( :X ), Y( :Y ), Wrap( :group ), Couleur( :value ) ), Expr(myCommand), SendToReport( Dispatch( {}, "X", ScaleBox, {Min( 0 ), Max( 100 ), Inc( 10 ), Minor Ticks( 9 )} ), Dispatch( {}, " Y", ScaleBox, {Min( 0 ), Max( 100 ), Inc( 10 ), Minor Ticks( 9 )} ), Dispatch( {}, "400", ScaleBox, {Legend Model( 17, Properties( 0, {dégradé( {Thème de couleur( "Corps noir" ), Valeurs d'échelle( [0 1 ] ), Dégradé inversé ( 1 )} )}, ID d'élément ( "valeur", 1 ) ) )} ) ) ) ) ) ))); stop1 = Aujourd'hui(); Print( "boîte de contexte du filtre de données : ", stop1 - start1 ); New Window( "wait ...", <calculée< est beaucoup plus petite, mais il faut le même temps pour que le graphique s'affiche Eval(EvalExpr(New Window( "Data Filter inside GraphBuilder", dt << Graph Builder( Size ( 400, 400 ), Afficher le panneau de configuration ( 0 ), Espacement des graphiques ( 5 ), Variables ( X ( : X ), Y ( : Y ), wrap ( : group ), Color ( : value ) ), Expr ( myCommand) , Filtre de données local( Ajouter un filtre( colonnes( :group ), Where( :group == As List( 0 :: 4 )[1] ), Display( :group, N Items( 15 ), Find( Set Text( " " ) ) ) ) ), SendToReport( Dispatch( {}, "X", ScaleBox, {Min( 0 ), Max( 100 ), Inc( 10 ), Minor Ticks( 9 )} ), Dispatch( {}, " Y", ScaleBox, {Min( 0 ), Max( 100 ), Inc( 10 ), Minor Ticks( 9 )} ), Dispatch( {}, "400", ScaleBox, {Legend Model( 17, Properties( 0, {dégradé( {Thème de couleur( "Corps noir" ), Valeurs d'échelle( [0 1] ), Dégradé inversé( 1 )} )}, ID d'élément( "valeur", 1 ) ) )} ) ) ) ))); stop2 = Aujourd'hui(); Print( "filtre de données local dans le Graphbuilder : ", stop2 - start2 );