Graph Builder> Grafikskript hinzufügen & gt; Hinzufügen Form, Symbole oder Bild anpassen?Hallo JMP Community,
Ist es ähnlich wie bei den Grafikskriptbefehlen Kreis, Oval und Rechteck möglich, benutzerdefinierte Formen, Symbole oder Bilder in eine FrameBox einzufügen?
Bemerkenswert bin ich nicht auf der Suche nach benutzerdefinierten Datenpunktmarkierungen.
Hier ist ein Ausschnitt der Art des Grafikskripts, mit dem ich arbeite (gb ist eine Graph Builder-Heatmap), in der ich den Kreis durch eine benutzerdefinierte Form ersetzen möchte:
gbr = report (gb);
fb = gbr [FrameBox (1)];
fb << add graphics script (
Fill color (black);
For (i = 0, i <= 24, i++,
For (j = 0.5, j <= 7, j = j+2,
r = (i*8) + (j+0.5);
s = column (dt,"SIZE FDR") [r] / 8;
if (s < 0.02, s = 0.02);
circle ({i,j}, s, "FILL")
)
);
);
Danke für deine Hilfe.
Beste,
TS
GrafikSkriptingBetreff: Graph Builder> Grafikskript hinzufügen & gt; Hinzufügen Form, Symbole oder Bild anpassen?path () Funktion?
https://community.jmp.com/t5/Discussions/Bezier-interpolation/mp/257852#M50666
und Bezierbaum mit Pfad () (und der Skriptindex hat wahrscheinlich einfachere Nicht- Bézier Beispiele.)
Auch die Spalteneigenschaft UseForMarker funktioniert für Bildspalten, aber es scheint, als hätten Sie möglicherweise nicht für jeden Marker einen Datenpunkt.
Ich denke, die einzige Möglichkeit, Bilder oder Symbole ohne UseForMarker zu erhalten, besteht darin, für jeden Marker separate Bildsegmente zu erstellen. Sie können segmentweise positioniert werden.
Betreff: Graph Builder> Grafikskript hinzufügen & gt; Hinzufügen Form, Symbole oder Bild anpassen?
N-spitze Sterne
makestar = Function( {x, y, npoints, inside, outside},
{p = J( 2 * npoints, 3, . ), angle, i, move = 1, draw = 2},
For( i = 1, i < N Rows( p ), 0,
angle = 2 * Pi() * i / N Rows( p );
p[i, 1] = x + Sin( angle ) * inside; // sin and cos are reversed here to
p[i, 2] = y + Cos( angle ) * inside; // make the point be at the top.
p[i, 3] = If( i == 1, move, draw ); // swap sin/cos for point at left.
i += 1;
angle = 2 * Pi() * i / N Rows( p );
p[i, 1] = x + Sin( angle ) * outside; // ditto
p[i, 2] = y + Cos( angle ) * outside;
p[i, 3] = If( i == N Rows( p ), -draw, draw );
i += 1;
);
p; // return
);
New Window( "Example",
gb = Graph Box(
xaxis( Show Major Grid( 1 ) ),
yaxis( Show Major Grid( 1 ) ),
framesize( 500, 500 ),
Pen Color( "red" );
Pen Size( 3 );
Fill Color( "blue" );
npoints = 3; // each star gets more points below
For( xx = 20, xx <= 80, xx += 20,
For( yy = 20, yy <= 80, yy += 20,
// the inside/outside ratio needs to change with more points...
p = makestar( xx, yy, npoints, 2 + npoints / 4, 8 );
Path( p, 1 ); // blue solid fill
Path( p, 0 ); // red outline
npoints += 1;
)
);
)
);
// move the grid lines above the stars
grid = gb[framebox( 1 )] << find seg( SegPlaceholder( 1 ) );
// grid is the original, below the stars
gb[framebox( 1 )] << appendseg( grid ); // makes a copy above
// probably not needed...they are on top of each other...
grid << delete; // delete the original from below
Betreff: Graph Builder> Grafikskript hinzufügen & gt; Hinzufügen Form, Symbole oder Bild anpassen?Lieber Craige,
Vielen Dank für Ihren Vorschlag, ich werde diese Methode untersuchen. Möglicherweise habe ich jedoch nicht genügend Details angegeben, um das Feedback zu erhalten, nach dem ich speziell suche.
In dem speziellen Fall, an dem ich arbeite, füge ich einer Heatmap über Zellen hinweg Formen hinzu, um die Bedeutung des Kontrasts zwischen diesen zu kennzeichnen. Bisher funktioniert alles wie geplant mit Circles, aber jetzt möchte ich dasselbe mit einer anderen Form wie einem Stern oder einer anderen benutzerdefinierten Form tun.
Freundliche Grüße,
TSBetreff: Graph Builder> Grafikskript hinzufügen & gt; Hinzufügen Form, Symbole oder Bild anpassen?Da ist auch ein PixelPath () Funktion. Wenn Sie auf Leistungsprobleme mit möglicherweise Tausenden von Punkten stoßen, können Sie mit PixelPath einen vorhandenen Pfad neu positionieren, dimensionieren und drehen. (Ich verstehe nicht, wie ich das machen soll Pfad() .) Sie können die Sterne einmal vorab erstellen und sie dann mit PixelPath wiederverwenden.
Path () und PixelPath () verhalten sich beim Strecken des Diagramms unterschiedlich: Path zeichnet Benutzerkoordinaten und die Zeichnung wird entsprechend den aktuellen Achsen gedehnt. PixelPath zeichnet Pixel ein und die Symbole ändern ihre Größe nicht.
Der Skriptindex enthält ein Beispiel für PixelPath. Verwenden Sie PixelOrigin (x, y) und lassen Sie h, v bei 0,0.