Dall'immagine ai dati
Introduzione
Cosa fai quando hai solo un'immagine di un grafico, ma hai bisogno dei dati dietro il grafico? Può essere un processo laborioso se decidi di farlo a mano, un punto alla volta. Tuttavia, puoi estrarre i dati da un'immagine in una tabella dati usando JMP, e ci vogliono solo pochi passaggi.

Passaggio 1: importare l'immagine
Il primo passo è ottenere l'intera immagine come informazione in una tabella JMP. Sebbene ciò possa essere fatto tramite scripting, può anche essere fatto usando l'eccellente Image to Table Add-In . Userò un'immagine della popolazione di Reykjavik come esempio, ma qualsiasi immagine di un grafico lineare dovrebbe funzionare.
Dopo aver scaricato e installato il componente aggiuntivo, selezionando Componenti aggiuntivi > Analizzatore di immagini posso selezionare l'immagine e importarla come tabella dati. La tabella dati include i dati RGB (oltre ad altre informazioni) per ogni pixel nell'immagine.

Passaggio 2: correggere la scala
Una volta aperta la tabella, usare Graph Builder per ricreare una versione in bianco e nero dell'immagine è abbastanza semplice. Nell'immagine qui sotto, ho usato la colonna I (Intensità) come colonna colore e ho invertito la scala Y per farla corrispondere al modo in cui vengono salvate le immagini.

Ora vedo un problema immediato: la scala sul grafico non corrisponde alla scala in JMP. È davvero facile da risolvere; comporta l'uso di alcune funzionalità integrate in JMP, insieme a una tabella dati intermedia.
- Crea una tabella dati vuota con quattro colonne (X, Y, X desiderata e Y desiderata).

- Scegli un punto dati nella parte inferiore sinistra del grafico in una posizione nota, ad esempio, dove l'asse X è l'anno 1896 e la popolazione è 0. Inserisci questi valori nella nuova tabella dati nella riga 1 delle colonne X desiderata e Y desiderata.

- Nella finestra Graph Builder, seleziona lo strumento Crosshair, quindi passa il mouse su questo punto dati. Nota i valori X e Y forniti. Scrivili nella riga 1 delle colonne X e Y.

- Ripeti questo procedimento per un punto noto nell'angolo in alto a destra del grafico, registrando sia i valori correnti che quelli desiderati per X e Y. La tua tabella dovrebbe apparire come nell'esempio seguente.

Il passo successivo è modificare i valori di scala X e Y nella tabella dei dati dell'immagine per adattarli a quanto mostrato nel grafico. In sostanza, è necessario applicare un offset e un fattore di scala a ogni colonna. Fortunatamente, questo è solo l'adattamento di una linea, che è una funzione di base della piattaforma Fit Y by X. Nell'immagine sottostante, ho adattato una linea alla relazione tra i valori correnti e i valori desiderati per X e Y.

La chiave qui è guardare la formula per il Linear Fit. Fornisce sia un offset che una scala, nella forma dell'equazione ay = mx + b, dove m è la scala e b è l'offset. Questi parametri possono essere utilizzati con lo strumento New Formula Column in JMP per correggere rapidamente gli assi.
- Nella tabella dei dati dell'immagine, fare clic con il pulsante destro del mouse sulla colonna X , selezionare Nuova colonna formula > Trasforma > Offset scala...
- Immettere i valori per il fattore di scala (scritto qui come Moltiplicatore) e l'Offset, copiati dalla formula nella finestra Adatta Y per X.

- Ripetere questo procedimento per la colonna Y. Assicurarsi di immettere il numero negativo per il moltiplicatore.
Ora, nella tabella dati ci sono nuove colonne per X e Y, con assi e scale che corrispondono all'immagine. Cambiando gli assi in queste nuove colonne nel Graph Builder, si vede come questi nuovi assi si allineano con gli assi nell'immagine.

Passaggio 3: estrarre i dati
L'unico passaggio rimanente è eliminare tutte le righe nella tabella dei dati dell'immagine che non sono punti dati sulla riga di interesse. Per fare ciò, K Means Clustering è uno strumento rapido e quasi automatico. (Un ringraziamento speciale a @landonbw1 per avermi mostrato questo trucco.)
L'immagine originale sembra avere quattro colori: bianco, blu, grigio e nero. Dovrebbe essere una cosa semplice, quindi, chiedere a JMP di separare le colonne R, G e B in quattro cluster, e la linea blu dovrebbe essere uno di quei cluster. A causa del modo in cui la compressione delle immagini, la fusione dei colori e altri fattori funzionano nei file di immagine, ci sono in realtà oltre 500 colori separati in questa immagine. Tuttavia, possiamo separare i colori principali abbastanza facilmente. In genere, impostando il numero di cluster al doppio del numero di colori visibili (colori che un normale essere umano direbbe essere in un'immagine) si creano cluster di singoli elementi grafici da un file di immagine.
- Selezionare Analizza > Clustering > Cluster K Means .
- Immettere le colonne R , G e B nella selezione Y, Colonne , quindi selezionare OK .
- Immetti 8 nella sezione Numero di cluster , quindi seleziona Vai .
- Seleziona ogni cluster nella tabella Cluster Summary a turno, mentre guardi Graph Builder, per determinare a quale cluster appartiene la linea. Nell'immagine sottostante, evidenziando Cluster 5 vengono evidenziati solo i punti dati nella linea dal grafico.

- Seleziona tutti i cluster eccetto quello di interesse (5, in questo caso) ed elimina queste righe dalla tabella. Ora, le uniche righe rimanenti sono i punti dati dal grafico nell'immagine. Modificando alcune opzioni di Graph Builder si ottiene un grafico interattivo dei dati in JMP, dove prima c'era solo un'immagine statica.

Conclusione
C'è una certa ironia nel fatto che ci vuole più tempo per leggere come estrarre i dati da un'immagine in una tabella dati rispetto a quanto ci vuole per fare effettivamente il processo. Ironia a parte, tuttavia, ci sono anche molte opportunità per usare questo processo, tra cui:
- All'inizio di un progetto di ricerca, quando si studia tutta la letteratura disponibile.
- Eseguire il reverse engineering di un processo o di un prodotto.
- Digitalizzazione delle curve sforzo-deformazione per l'utilizzo nella piattaforma Fatigue Model .
Quali opportunità si aprono per il tuo lavoro?
molto bello, il Clustering fa davvero risparmiare un sacco di tempo!!
Ottimo lavoro, @Jed_Campbell .
In molti casi la selezione dei dati (estrazione della curva) funziona anche selezionando interattivamente i punti/regione di interesse in Graph Builder, quindi inverte la selezione di riga (nella tabella) e quindi riga>nascondi ed escludi. Lo spazio bianco può essere rimosso in modo simile, ad esempio seleziona un punto bianco (in Graph Builder) > seleziona celle corrispondenti (clicca con il tasto destro sulla cella nella tabella) > riga>nascondi ed escludi.
Ha funzionato bene per me già:)
Questo componente aggiuntivo rappresenta un grande passo avanti per chi desidera recuperare dati da immagini di grafici direttamente in JMP: grazie per averlo reso disponibile!
Per chi si occupa di attività simili, consiglio di provare uno strumento gratuito chiamato WebPlotDigitizer ( https://automeris.io/WebPlotDigitizer/ ). È disponibile da un po' ed è sorprendentemente veloce e intuitivo nell'estrazione di dati da tutti i tipi di grafici. La versione 4.x è open source e può essere utilizzata offline, il che è molto pratico.
È fantastico vedere che sempre più strumenti sono disponibili per questo tipo di lavoro. Speriamo che il continuo sviluppo su entrambi i fronti renda l'estrazione dei dati ancora più fluida!