Wenn Sie bereits eine bestimmte Kurve haben, können Sie mithilfe von Code in der Nähe der Daten wiederherstellen.
Stellen Sie die Anzahl der bekannten Daten sowie die Maximal- und Minimalwerte der Daten ein
Es scheint eine künstliche Intelligenzfunktion zu haben.
Vielen Dank Experten!

Ich muss zugeben, dass ich nicht genug über die Frage verstehe, um eine Antwort vorzuschlagen. Wenn es sich bei der Kurve um eine Bitmap-Malerei (PNG-Datei) handelt, kann ich mir nicht vorstellen, dass JMP auch das richtige ist, um zu versuchen, sie zu lesen. Suchen Sie eine optische Scan- und Erkennungssoftware?
In welchem Format ist die Kurve? Versuchen Sie, die rote Kurve zu lesen, oder versuchen Sie, den numerischen Text am unteren Bildrand zu lesen?
Vielleicht werde ich durch die Behauptung, dass JMP dies nicht kann, eine Funktion über JMP lernen, die mir nicht bekannt ist.
Übrigens sollte ich erwähnen, dass die Verarbeitung (in diesem Beispiel) dies kann, 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 viel schneller und weniger überfüllt mit Datentabellen sein. Wie Sie sehen werden, ist das Diagramm, das Sie erhalten, im Grunde das gleiche.
</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">Re: Kann JSL den Wert der Kurve wiederherstellen?</LINGO-SUB><LINGO-BODY id="lingo-body-382962" slang="en-US"><P>Dies ist nicht immer einfach, aber je nach Grafik möglich. Hier ist eine Möglichkeit, dies für das von Ihnen bereitgestellte Diagramm zu tun. Es gibt vielleicht 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 Diagrammfarbe das Minimum in jeder Pixelspalte. In anderen Fällen müssen Sie möglicherweise eine Art Bandpassfilter usw. Bei einem mehrfarbigen Hintergrund funktioniert auch dieser Ansatz möglicherweise nicht, wenn die Farbe des Diagramms mit einer der Farben im Hintergrund übereinstimmt. Probiere das auf jeden Fall aus.</P>
<P> </P>
<P>Dies ist ein grober Ansatz, sollte Ihnen jedoch einen Ausgangspunkt geben. Die Daten zu bereinigen/zu glätten ist im Nachhinein gar nicht so schwer. Ich bin sicher, auch andere werden viele Möglichkeiten finden, 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 heruntergefahren 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;"><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></P>
<P> </P>
<P> </P>
<P> </P>
<P> </P>
<P>Beifall,</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>