Kann JSL den Wert der Kurve wiederherstellen?Wenn Sie bereits eine bestimmte Kurve haben, können Sie Code verwenden, um die Daten in der Nähe wiederherzustellen.
Legen Sie die Anzahl bekannter Daten sowie die maximalen und minimalen Datenwerte fest
Es scheint eine Funktion der künstlichen Intelligenz zu haben.
Danke Experten!

SkripterstellungBetreff: Kann JSL den Wert der Kurve wiederherstellen?Und vor allem möchte ich erreichen, wie ähnlich diese Kurve einer anderen ist.
Das Prinzip sollte ein Vergleich zwischen zwei Datensätzen sein.
Kann JMP das gut hinbekommen?
Erstellen Sie beispielsweise ein Diagramm mit JSL unten und vergleichen Sie es mit dem Diagramm oben.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Sort( By( 1 ), Order( Ascending ), replacetable( 1 ) );
New Column( "A" );
Column( "A" ) << Formula( Row() );
dt << run formulas;
Column( "A" ) << deleteFormula;
p1 = Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :A ) ),
Elements( Line( X, Y, Legend( 4 ) ) )
);

Danke Experten!
Betreff: Kann JSL den Wert der Kurve wiederherstellen?Nochmals vielen Dank an Brady für die Kraft dieses Skripts.
Ich möchte mit diesem Skript noch einen Schritt weiter gehen
Das Skript ist jedoch leicht modifiziert, um es als Daten zu identifizieren:
Identifizieren Sie die Kurve mit nur einem Pixel, einer Position auf der X-Achse, solange Sie einen entsprechenden Y-Wert identifizieren.

Betreff: Kann JSL den Wert der Kurve wiederherstellen?Übrigens sollte ich erwähnen, dass, wenn Sie sich nicht für die Mittelung über Pixel interessieren (die Linie in der Grafik hier ist in jeder Spalte mehrere Pixel dick) und nur nach einer Annäherung suchen, die Verarbeitung (in diesem speziellen Beispiel) kann viel schneller und weniger mit Datentabellen überladen sein. Wie Sie sehen werden, ist die Grafik, die Sie erhalten, im Grunde dieselbe.
</CODE></P>
<PRE><CODE class=" language-jsl">names default to here(1);
New Window( "Example",
pb = Picture Box( Open( "/Users/homer.simpson@jmp.com/Downloads/graphPic.png", png ) )
);
pixMat = (pb << get image) << get pixels;
pixMat = pixMat[20 :: 265, 15 :: N Col( pixMat )];
nc = N Col( pixMat );
x = (1 :: nc)`;
y = J( nc, 1, . );
For( i = 1, i <= nc, i++,
y[i] = Loc Min( pixMat[0, i] )
);
y = nrow( pixMat ) - y; //"flip" y-vals to account for screen coordinate convention.
dt = As Table( x || y, <<COLUMN names=""></COLUMN>
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-382962" slang="en-US" mode="NONE">Betreff: Kann JSL den Wert der Kurve wiederherstellen?</LINGO-SUB><LINGO-BODY id="lingo-body-382962" slang="en-US" mode="NONE"><P>Dies ist nicht immer einfach, aber je nach Graph möglich. Hier ist eine Möglichkeit, dies für das von Ihnen bereitgestellte Diagramm zu tun. Es gibt möglicherweise effizientere Wege da draußen, da ich keinen Hintergrund in der Bildverarbeitung habe - Entschuldigung.</P>
<P> </P>
<P>Die Idee ist, die Pixelwerte für das Bild zu erhalten und sich auf die Unterschiede zwischen dem Hintergrund und dem Diagramm zu konzentrieren. In diesem Fall war die Grafikfarbe das Minimum in jeder Spalte von Pixeln. In anderen Fällen müssen Sie möglicherweise eine Art Bandpassfilter usw. ableiten. Bei einem mehrfarbigen Hintergrund funktioniert möglicherweise sogar dieser Ansatz nicht, wenn die Farbe des Diagramms dieselbe ist wie eine der Farben im Hintergrund. Probieren Sie es auf jeden Fall aus.</P>
<P> </P>
<P>Dies ist ein grober Ansatz, sollte Ihnen aber einen Ausgangspunkt geben. Die Daten zu bereinigen/glätten ist im Nachhinein nicht so schwer. Ich bin sicher, dass auch andere viele Möglichkeiten finden werden, den Ansatz und die Leistung zu verbessern.</P>
<P> </P>
<P>HINWEIS: Ich habe x und y nicht neu skaliert. Auch dies ist nicht schwer, sobald Sie die Matrix auf die Daten des Diagramms reduziert haben.</P>
<P> </P>
<P>Ich habe die .png-Datei angehängt, die ich verwendet habe, damit Sie dieselbe Datei verwenden können, die ich verwendet habe.</P>
<P> </P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="brady_brady_0-1620328935156.png" style="width: 999px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="brady_brady_0-1620328935156.png" style="width: 999px;"><span class="lia-inline-image-display-wrapper" image-alt="brady_brady_0-1620328935156.png" style="width: 999px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32659i25847C5EFC991944/brady_brady_0-1620328935156.png" role="button" title="brady_brady_0-1620328935156.png" alt="brady_brady_0-1620328935156.png" /></span></SPAN></SPAN></P>
<P> </P>
<P> </P>
<P> </P>
<P> </P>
<P>Prost,</P>
<P>Brady</P>
<PRE><CODE class=" language-jsl">
Names Default To Here( 1 );
//need to save image and put the file path in the open() function.
New Window( "Example", pb = Picture Box( Open( "/Users/brady.brady@jmp.com/Downloads/graphPic.png", png ) ) );
img = pb << get image;
pixMat = img << get pixels;
pixMat = 1000*(floor(pixMat/1000)); //smooths values; use whatever factor you like
dt = astable(pixmat);
eval(substitute (
expr(dt << new column("Row", formula( _ROW_ - :row()))), //low rows for pixels are high. This is a fix for that.
expr(_ROW_),
nrow(dt)
));
dt:row << Delete Formula;
dt << move selected columns({"Row"}, to first);
dt << select where (:row() <= 20 | :row() >= 265) << Delete Rows; // top and bottom few rows of this table are not useful
stackCols = (dt << get column names)[14::ncol(dt)];
dtStack = dt << Stack(
columns( stackCols ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :Row ) )
);
dtStack << select where (:data == col minimum(:data, :label)); //in this case, minimum color is the graph.
dtSub = dtStack << subset(selected rows(1), selected columns (0));
dtSub << new column("x", formula(num(substitute(:label, "Col", ""))));
summarize(dtSub, b = by(:label), yVals = mean(:Row), xVals = mean(:x));
astable(xvals || yvals, <<COLUMN names=""></COLUMN>
Betreff: Kann JSL den Wert der Kurve wiederherstellen?Ich muss zugeben, dass ich die Frage nicht genug verstehe, um eine Antwort vorzuschlagen. Wenn die Kurve ein Bitmap-Gemälde (.png-Datei) ist, kann ich mir nicht vorstellen, dass JMP auch das Recht hat, zu versuchen, sie zu lesen. Suchen Sie nach einer Art optischer Scan- und Erkennungssoftware?
In welchem Format ist die Kurve? Versuchen Sie, die rote Kurve zu lesen, oder versuchen Sie, den numerischen Text am unteren Rand des Bildes zu lesen?
Vielleicht lerne ich durch die Behauptung, dass JMP das nicht kann, eine Funktion über JMP kennen, die mir nicht bekannt ist.