Graph Builder > Grafikskript hinzufügen > Form, Symbole oder Bild anpassen hinzufügen?Hallo JMP-Community,
Ist es ähnlich wie bei den Grafikskriptbefehlen Kreis, Oval und Rechteck möglich, in eine FrameBox benutzerdefinierte Formen, Symbole oder Bilder einzufügen?
Bemerkenswert ist, dass ich es bin nicht Ich bin auf der Suche nach benutzerdefinierten Datenpunktmarkierungen.
Hier ist ein Ausschnitt des Grafikskripttyps, mit dem ich arbeite (gb ist eine Heatmap zum Erstellen von Diagrammen), in dem 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")
)
);
);
Ich danke Ihnen für Ihre Hilfe.
Am besten,
TS
MassenanpassungBetreff: Graph Builder > Grafikskript hinzufügen > Form, Symbole oder Bild anpassen hinzufügen?Da ist auch ein PixelPath() Funktion. Wenn Sie auf Leistungsprobleme stoßen, beispielsweise bei Tausenden von Punkten, ermöglicht PixelPath die Neupositionierung, Größenanpassung und Drehung eines vorhandenen Pfads. (Ich weiß nicht, wie ich das machen soll Weg() .) Sie können die Sterne einmal vorab erstellen und sie dann mit PixelPath wiederverwenden.
Path() und PixelPath() verhalten sich unterschiedlich, wenn Sie das Diagramm strecken: Path zeichnet Benutzerkoordinaten und die Zeichnung wird gestreckt, um sie an die aktuellen Achsen anzupassen. PixelPath zeichnet Pixel und die Größe der Symbole ändert sich nicht.
Der Skriptindex enthält ein Beispiel für PixelPath; Verwenden Sie PixelOrigin(x,y) und belassen Sie h,v bei 0,0.
Betreff: Graph Builder > Grafikskript hinzufügen > Form, Symbole oder Bild anpassen hinzufügen?
N-pointed starsN-pointed starsN-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 > Form, Symbole oder Bild anpassen hinzufügen?Lieber Craige,
Vielen Dank für Ihren Vorschlag, ich werde diese Methode prüfen. Allerdings habe ich möglicherweise 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 anzuzeigen. Bisher funktioniert mit Kreisen alles wie geplant, aber ich suche jetzt nach einer Möglichkeit, dasselbe mit einer anderen Form wie einem Stern oder einer anderen benutzerdefinierten Form zu erreichen.
Mit freundlichen Grüßen,
TSBetreff: Graph Builder > Grafikskript hinzufügen > Form, Symbole oder Bild anpassen hinzufügen?path()-Funktion?
Bezier-Interpolation Und Bezier-Baum mit Path() (Und der Skriptindex hat wahrscheinlich einfachere Nicht- Bézier Beispiele.)
Auch die Spalteneigenschaft UseForMarker funktioniert auf Bildspalten, aber es hört sich so an, als hätten Sie möglicherweise nicht für jede Markierung einen Datenpunkt.
Ich denke, die einzige Möglichkeit, Bilder oder Symbole ohne UseForMarker zu erhalten, besteht darin, für jede Markierung separate Bildsegmente zu erstellen. Sie können Segment für Segment positioniert werden.