JSL può ripristinare il valore della curva?Se hai già una determinata curva, How può utilizzare il codice per ripristinare vicino ai dati.
Impostare il numero di dati noti e i valori massimo e minimo dei dati
Sembra avere qualche funzione di intelligenza artificiale.
Grazie Esperti!

SceneggiaturaRe: JSL può ripristinare il valore della curva?E, soprattutto, voglio ottenere quanto sia simile questa curva a un'altra.
Il principio dovrebbe essere un confronto tra due serie di dati.
JMP può raggiungere questo obiettivo bene?
Ad esempio, traccia un grafico con JSL di seguito e confrontalo con il grafico sopra.
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 ) ) )
);

Grazie Esperti!
Re: JSL può ripristinare il valore della curva?Grazie ancora a Brady per la potenza di questa sceneggiatura.
Voglio fare un ulteriore passo avanti con questo script
Tuttavia, lo script è leggermente modificato per identificarsi come dati:
Identifica la curva con un solo pixel, una posizione dell'asse X, purché identifichi un valore Y corrispondente.

Re: JSL può ripristinare il valore della curva?A proposito, dovrei menzionare che se non ti interessa fare la media sui pixel (la linea nel grafico qui è spessa diversi pixel in ogni colonna) e stai solo cercando un'approssimazione, l'elaborazione (in questo particolare esempio) può essere molto più veloce e meno ingombrante con le tabelle di dati. Come vedrai, il grafico che ottieni è sostanzialmente lo stesso.
</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">Re: JSL può ripristinare il valore della curva?</LINGO-SUB><LINGO-BODY id="lingo-body-382962" slang="en-US" mode="NONE"><P>Questo non è sempre facile ma può essere fatto, a seconda del grafico. Ecco un modo per farlo per il grafico che hai fornito. Potrebbero esserci modi più efficienti là fuori, dato che non ho background nell'elaborazione delle immagini - mi scuso.</P>
<P> </P>
<P>L'idea è di ottenere i valori dei pixel per l'immagine e concentrarsi sulle differenze tra lo sfondo e il grafico. In questo caso, il colore del grafico era il minimo in qualsiasi colonna di pixel. In altri casi, potrebbe essere necessario derivare una sorta di filtro passa-banda, ecc. Per uno sfondo multicolore, anche questo approccio potrebbe non funzionare, se il colore del grafico fosse lo stesso di uno dei colori dello sfondo. Ad ogni modo, prova questo.</P>
<P> </P>
<P>Questo è un approccio grezzo, ma dovrebbe darti un punto di partenza. Ripulire/smussare i dati non è così difficile da fare dopo il fatto. Sono sicuro che anche gli altri troveranno molti modi per migliorare l'approccio e le prestazioni.</P>
<P> </P>
<P>NOTA: non ho ridimensionato xey. Ancora una volta, non è difficile da fare una volta che hai ottenuto la matrice fino ai dati del grafico.</P>
<P> </P>
<P>Ho allegato il .png che ho usato in modo da poter utilizzare lo stesso file che ho fatto.</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>Saluti,</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>
Re: JSL può ripristinare il valore della curva?Devo ammettere che non ho capito abbastanza della domanda per iniziare a proporre una risposta. Se la curva è un disegno di una mappa di bit (file .png), allora non riesco a immaginare che anche JMP sia giusto per provare a leggerla. Stai cercando una sorta di software di scansione e riconoscimento ottico?
In che formato è la curva? Stai cercando di leggere la curva rossa o stai cercando di leggere il testo numerico nella parte inferiore dell'immagine?
Forse affermando che JMP non può farlo, sto per imparare alcune funzionalità di JMP di cui non sono a conoscenza.