Bivariate Schleife im LinienstilHallo zusammen
Ich versuche, ein bivariates Diagramm mit einer Gruppe zu erstellen, die unterschiedliche Linienstile benötigt. Allerdings variiert die Gruppe je nach den gegebenen Daten. Hier sind Beispieldaten, die nach ihrem Beruf gruppiert sind. Wie kann ich in meiner Funktion eine Schleife erstellen, um einen Linienstil zu erstellen?
biv = Bivariate( Y( :weight ), X( :height ),
Group By( :occupation ), << Fit Line );
rbiv = biv << report << Show Points( 1 );
ymin = rbiv[Axis Box(1)] << Get Min;
ymax = rbiv[Axis Box(1)] << Get Max;
xmin = rbiv[Axis Box(2)] << Get Min;
xmax = rbiv[Axis Box(2)] << Get Max;
rbiv[Frame Box( 1 )] << {Frame Size( 205, 164 ), Marker Size( 2 ), Line Width Scale( 2 )};
rbiv [Border Box (2)] << Sides(0);
rbiv[Axis Box( 1 )] << Format( "Best", 12 ) << Tick Font( style( 1 ), size( 9 ) )
<< Show Major Grid( 1 ) << Show Minor Grid( 1 ) << Show Minor Ticks( 1 );
rbiv[Axis Box( 2 )] << Format( "Best", 12 ) << Tick Font( style( 1 ), size( 9 ) )
<< Show Major Grid( 1 ) << Show Minor Grid( 1 ) << Show Minor Ticks( 1 );
rbiv[Text Edit Box( 1 )] << Set Font Size( 10 ) << Set Font Style( "Bold" );
rbiv[Text Edit Box( 2 )] << Set Font Size( 10 ) << Set Font Style( "Bold" );
rbiv[Outline Box( 2 )] << Close All Below;
rbiv[Outline Box( 2 )] << Close All Like This;Erweiterte statistische ModellierungVerbraucher- und MarktforschungDatenmischung und -bereinigungDatenexploration und -visualisierungMassenanpassungQualitäts- und VerfahrenstechnikBetreff: Bivariate LinienstilschleifeDas habe ich total vermisst! Danke, ich habe es vollkommen verstanden
Betreff: Bivariate LinienstilschleifeEs gibt zwei Probleme.Sie verwenden die Indexvariable „i“ in 2 verschiedenen Schleifen.Die zweite Schleife ändert die Werte von „i“, wodurch sich der Wert erhöht, wenn die erste Schleife die zweite Schleife startet.Es stellt fest, dass „i“ größer als nitems(colnamex) ist, und stoppt daher die Schleife. Wenn Sie „i“ in „k“ ändern für
For(k = 1, k <= Nitems(colnamex), k++,
bivplot_line1( colname[1],colnamex[ik) );
Der Code wird in einer Schleife ausgeführt.
Das zweite Problem besteht darin, dass Sie zwei Spalten angegeben haben, Geschwisteralter und Altersvektor, die keine gültigen Spalten für die Verwendung in der Bivariate sind.Daher wird der Code in Ihrem Beispiel nur für 2 Spalten korrekt ausgeführt.
Betreff: Bivariate LinienstilschleifeHallo Txnelson,
Die Linienlegenden funktionieren einwandfrei, aber als ich versuchte, diese Schleife in meine Funktion einzufügen, die mehrere Diagramme generieren muss, wird nur ein Diagramm generiert, obwohl es vier sein sollten (4 y-Spalten).
Bitte helfen Sie beim Schleifen der Funktion
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
bivplot_line1 = Function({ ycol, xcol }, {plot},
biv = Bivariate( Y( Column( dt, ycol ) ), X( Column( dt, xcol )) );
rbiv = biv << report << Show Points( 1 );
styleList = {"Solid", "Dashed", "Dotted", "DashDot", "DashDotDot"};
Summarize( dt, groups = by ( :Sex ) );
mystyle = styleList[2];
For( i = 1, i <= N Items( groups ), i++,
Eval(
Parse( "biv << Fit Where( :Sex == \!"" || groups[i] || "\!",
Fit Line( { Line Style( \!"" || styleList[i] || "\!" )} ) )"
)
)
);
);
colname = {"weight"};
colnamex = {"age", "height", "siblings ages", "age vector"};
For(i = 1, i <= Nitems(colnamex), i++,
bivplot_line1( colname[1],colnamex[i]) );
Betreff: Bivariate LinienstilschleifeHier ist ein anderer Ansatz für dasselbe Problem
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Bivariate( Y( :weight ), X( :height ) );
styleList = {"Solid", "Dashed", "Dotted", "DashDot", "DashDotDot"};
Summarize( dt, groups = by( :sex ) );
mystyle = styleList[2];
For( i = 1, i <= N Items( groups ), i++,
Eval(
Parse(
"obj << Fit Where( :sex == \!"" || groups[i] || "\!",
Fit Line( { Line Style( \!"" ||
styleList[i] || "\!" )} ) )"
)
)
);Betreff: Bivariate LinienstilschleifeNachdem Sie Ihren bivariaten Bericht erstellt haben, suchen Sie mithilfe von XPath oder „Segs suchen“ nach Verweisen auf Liniensegmente und gehen Sie dann mit diesen Referenzen um:
Names Default To Here(1);
dt = Current Data Table();
biv = dt << Bivariate(Y(:weight), X(:height), Group By(:occupation), <<FIT line=""></FIT>
Betreff: Bivariate LinienstilschleifeIch muss fragen: Wie würden Sie einen Linienstil erstellen, wenn Sie nicht wissen, wie Sie die Linien formatieren, weil Sie nicht wissen, wie viele Stile Sie benötigen?
Dieser Fehler wird höchstwahrscheinlich dadurch verursacht, dass Sie eine JMP-Version vor 16 verwenden. Die Schleife muss in eine reguläre For-Schleife anstelle von For Each geändert werden (einfache Änderung).
Betreff: Bivariate LinienstilschleifeHallo, ich habe einen Fehler erhalten. Außerdem denke ich, dass dieser Teil nicht fest codiert werden sollte, da die Daten, wie gesagt, von Zeit zu Zeit variieren und sich ändern
aa_line = Associative Array();
aa_line["Dentist"] = {"Yellow", "Dotted"};
aa_line["Doctor"] = {"Green", "DashDotDot"};
aa_line["Engineer"] = {"Red", "Solid"};
Betreff: Bivariate LinienstilschleifeSie könnten ein assoziatives Array verwenden, um die Einstellungen zu speichern (höchstwahrscheinlich wäre es am besten, ein assoziatives Array innerhalb eines assoziativen Arrays zu verwenden, aber ich bin faul geworden) und dann Fit Where mit EvalEvalExpr verwenden. Sie müssen die Einstellungen für jede der Gruppen in dieser Lösung kennen, aber je nach Ihren Daten/Lösung gibt es Möglichkeiten, dies zu umgehen:
Names Default To Here(1);
dt = Current Data Table();
biv = Bivariate(Y(:weight), X(:height), Group By(:occupation));
rbiv = biv << report << Show Points(1);
aa_line = Associative Array();
aa_line["Dentist"] = {"Yellow", "Dotted"};
aa_line["Doctor"] = {"Green", "DashDotDot"};
aa_line["Engineer"] = {"Red", "Solid"};
For Each({{key_occ, value_list}}, aa_line,
Eval(Eval Expr(biv << Fit Where(:occupation == Expr(key_occ), Fit Line({Line Color(Expr(value_list[1])), Line Style(Expr(value_list[2]))}))))
);
rbiv = biv << report << Show Points(1);
ymin = rbiv[Axis Box(1)] << Get Min;
ymax = rbiv[Axis Box(1)] << Get Max;
xmin = rbiv[Axis Box(2)] << Get Min;
xmax = rbiv[Axis Box(2)] << Get Max;
rbiv[Frame Box(1)] << {Frame Size(205, 164), Marker Size(2), Line Width Scale(2)};
rbiv[Border Box(2)] << Sides(0);
rbiv[Axis Box(1)] << Format("Best", 12) << Tick Font(style(1), size(9)) << Show Major Grid(1) << Show Minor Grid(1) << Show Minor Ticks(1);
rbiv[Axis Box(2)] << Format("Best", 12) << Tick Font(style(1), size(9)) << Show Major Grid(1) << Show Minor Grid(1) << Show Minor Ticks(1);
rbiv[Text Edit Box(1)] << Set Font Size(10) << Set Font Style("Bold");
rbiv[Text Edit Box(2)] << Set Font Size(10) << Set Font Style("Bold");
rbiv[Outline Box(2)] << Close All Below;
rbiv[Outline Box(2)] << Close All Like This;