Tracciare il diagramma 3DCiao,
Sto cercando di tracciare un diagramma 3D ma senza successo. Ho i dati in Excel in questo modo:
| | Y | 4,15815757 | 10,5410784 |
| X | | Z1 | Z2 |
| 0,00038225 | | 0,04740562 | 0,09242527 |
| 0,00032384 | | 0,13448339 | 0,34250103 |
Ma ho molte righe e colonne. Questo è solo un esempio. Gradirei qualsiasi aiuto.
Grazie.
Re: Tracciare un diagramma 3D'Daten.xlsx' ha 23 valori Y, 444 valori X e un valore Z per ciascuno (10212 valori in tutto). Quindi "dtFinal" non dovrebbe essere:
dtFinal = New Table( "Converted", New Column( "X" ), New Column( "Y" ), New Column( "Z" ) );
dtFinal << add rows( N Rows( Xmat ) * N Rows( Ymat ) );
rowcnt = 0;
For( Xcnt = 1, Xcnt <= N Rows( Xmat ), Xcnt++,
For( Ycnt = 1, Ycnt <= N Rows( Ymat ), Ycnt++,
rowcnt++;
dtFinal:X[rowcnt] = Xmat[Xcnt];
dtFinal:Y[rowcnt] = Ymat[Ycnt];
dtFinal:Z[rowcnt] = Zmat[Xcnt, Ycnt];
)
);
stai dando qualcosa del genere?

Senza sapere nulla del contesto dei dati e di ciò che stai tentando, immagino che siano possibili visualizzazioni più informative.
Re: Tracciare un diagramma 3DIl codice funziona abbastanza bene. Ho scoperto che non ho abbastanza memoria disponibile per eseguire tutte le righe 104.284.944 , ecco perché non è stato eseguito.
Sto usando JMP 12.
Grazie mille.
Re: Tracciare un diagramma 3DHo scaricato il tuo file Excel e l'ho salvato.Ho quindi indirizzato lo script JSL al nuovo file.Ho anche dovuto cambiare la riga nel codice
Worksheets( "example" ),
A
Worksheets( "JMP" ),
perché avevi cambiato il nome del foglio di calcolo all'interno della cartella di lavoro.
Non ho eseguito il programma per tutte le 104.284.944 righe che JSL produrrà se eseguito fino al completamento, ma l'ho eseguito su un numero inferiore per dimostrare a me stesso che il codice avrebbe funzionato.
Se la modifica di cui sopra non è il problema, la domanda successiva che avrei è: quale versione di JMP stai utilizzando?
Re: Tracciare un diagramma 3DGrazie mille per il tuo aiuto, l'ho davvero apprezzato.
Tuttavia, quando eseguo lo script, viene visualizzato un errore nella riga 70 che indica che il valore nella colonna X non può essere determinato perché il numero di righe (0) non è valido.
Ho allegato i dati Excel su cui sto lavorando. Ti dispiacerebbe dare un'occhiata? Sono un nuovo utente di JSL, ecco perché non ho molta esperienza.
Grazie.
Re: Tracciare un diagramma 3DIl mio primo suggerimento è di spostare Add Rows() più in alto nel loop.Aggiungi righe() è una funzione piuttosto lenta, quindi se potessi aggiungere tutte le righe necessarie per la tabella dati, subito dopo la New Table() iniziale, ciò renderebbe il programma molto più veloce.Ciò significherebbe anche che dovresti aggiungere un contatore di righe complessivo, per tenere traccia di quale riga stai lavorando, invece di utilizzare N Rows().
Names Default To Here( 1 );
// Read in Excel file
dt = Open(
"c:\users\txjim\documents\read in issue\example.xlsx"
/*"<YOUR path="" to="" the="" excel="" file="">\example.xlsx"*/,
Worksheets( "example" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 0 ),
,
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 1 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// Get Y Matrix
Ymat = {};
For( i = 3, i <= N Col( dt ), i++,
If( Column( i )[1] != "",
Ymat = Ymat |/ Matrix( Num( Column( i )[1] ) )
)
);
// Get rid of unrequired cells, and get the X and Z matrices
dt << select rows( [1, 2, 3] );
dt << delete rows;
dt << delete column( 2 );
// Convert all columns to numerics
For( i = 1, i <= N Col( dt ), i++,
Column( dt, i ) << data type( numeric )
);
// Get X matrix
Xmat = Column( dt, 1 ) << get as matrix;
dt << delete column( 1 );
// Get Z matrix
Zmat = dt << get as matrix;
// Create new data table, and output the data
dtFinal = New Table( "Converted", New Column( "X" ), New Column( "Y" ), New Column( "Z" ) );
dtFinal << add rows( N Rows( Xmat ) * N Rows( Ymat ) * N Rows( Zmat ) * N Cols( Zmat ) );
rowcnt = 0;
For( Xcnt = 1, Xcnt <= N Rows( Xmat ), Xcnt++,
For( Ycnt = 1, Ycnt <= N Rows( Ymat ), Ycnt++,
For( Zrowcnt = 1, Zrowcnt <= N Rows( Zmat ), Zrowcnt++,
For( Zcolcnt = 1, Zcolcnt <= N Cols( Zmat ), Zcolcnt++,
rowcnt++;
dtFinal:X[rowcnt] = Xmat[Xcnt];
dtFinal:Y[rowcnt] = Ymat[Ycnt];
dtFinal:Z[rowcnt] = Zmat[Zrowcnt, Zcolcnt];
)
)
)
);
dtFinal << Scatterplot 3D(
Y( :X, :Y, :Z ),
Frame3D(
Set Grab Handles( 0 ),
Set Walls( 1 ),
Set Rotation( -54, 0, 38 ),
Set Text Scale( 2 ),
Set Line Scale( 1 ),
Set Marker Transparency( 1 ),
Set Marker Quality( 0.25 ),
Set Marker Scale( 1 ),
Set View Perspective( 0.1 ),
Set View Zoom( 1 )
)
);</YOUR>Re: Tracciare un diagramma 3DHo solo un'altra domanda. C'è un modo per far funzionare questo codice più velocemente, perché ho a che fare con big data e ci vogliono ore per eseguirlo e a volte no.
Il mio notebook è un Asus, Windowns 7, 64 bit, 4 GB (RAM) e 197 GB di memoria.
Quindi non penso che il problema sia con il mio computer, giusto?
Grazie.
Re: Tracciare un diagramma 3DGrazie mille. Questo è esattamente quello che volevo fare e funziona perfettamente.
Re: Tracciare un diagramma 3DHo creato un file Excel di esempio, in base alla tua descrizione e l'ho allegato a questa voce.Ho quindi sviluppato il seguente JSL per leggerlo e creare il grafico 3D dei dati.Spero che questo sia quello che vuoi

Names Default To Here( 1 );
// Read in Excel file
dt = Open(
"<YOUR path="" to="" the="" excel="" file="">\example.xlsx",
Worksheets( "example" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 0 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 1 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
// Get Y Matrix
Ymat = {};
For( i = 3, i <= N Col( dt ), i++,
If( Column( i )[1] != "",
Ymat = Ymat |/ Matrix( Num( Column( i )[1] ) )
)
);
// Get rid of unrequired cells, and get the X and Z matrices
dt << select rows( [1, 2, 3] );
dt << delete rows;
dt << delete column( 2 );
// Convert all columns to numerics
For( i = 1, i <= N Col( dt ), i++,
Column( dt, i ) << data type( numeric )
);
// Get X matrix
Xmat = Column( dt, 1 ) << get as matrix;
dt << delete column( 1 );
// Get Z matrix
Zmat = dt << get as matrix;
// Create new data table, and output the data
dtFinal = New Table( "Converted", New Column( "X" ), New Column( "Y" ), New Column( "Z" ) );
For( Xcnt = 1, Xcnt <= N Rows( Xmat ), Xcnt++,
For( Ycnt = 1, Ycnt <= N Rows( Ymat ), Ycnt++,
For( Zrowcnt = 1, Zrowcnt <= N Rows( Zmat ), Zrowcnt++,
For( Zcolcnt = 1, Zcolcnt <= N Cols( Zmat ), Zcolcnt++,
dtFinal << Add Rows( 1 );
dtFinal:X[N Rows( dtFinal )] = Xmat[Xcnt];
dtFinal:Y[N Rows( dtFinal )] = Ymat[Ycnt];
dtFinal:Z[N Rows( dtFinal )] = Zmat[Zrowcnt, Zcolcnt];
)
)
)
);
dtFinal << Scatterplot 3D(
Y( :X, :Y, :Z ),
Frame3D(
Set Grab Handles( 0 ),
Set Walls( 1 ),
Set Rotation( -54, 0, 38 ),
Set Text Scale( 2 ),
Set Line Scale( 1 ),
Set Marker Transparency( 1 ),
Set Marker Quality( 0.25 ),
Set Marker Scale( 1 ),
Set View Perspective( 0.1 ),
Set View Zoom( 1 )
)
);</YOUR>
Assicurati di modificare il percorso nel JSL in modo che punti al punto in cui salvi il file Excel allegato
Re: Tracciare un diagramma 3DGrazie per avermi risposto. Ti mostrerò come appaiono i miei dati in Excel:
| | Y | 4,15815757 | 10,5410784 | 14,6453847 | 19,762652 | 29,5884633 | 40,1035851 | 52,7727379 | 64,5664014 | 71,6339866 | 80,1791963 | 92,5639742 | 108,325272 | 114,711013 | 121,815695 | 142,186092 | 160,139901 | 175,938007 | 189,208612 | 200,409857 | 209,675249 | 221,03791 | 241,182479 | 256,870356 |
| X | | Z1 | Z2 | Z3 | Z4 | Z5 | Z6 | Z7 | Z8 | Z9 | Z10 | Z11 | Z12 | Z13 | Z14 | Z15 | Z16 | Z17 | Z18 | Z19 | Z20 | Z21 | Z22 | Z23 |
| 0 | | | | | | | | | | | | | | | | | | | | | | | | |
| -3,8225E-05 | | 0,04740562 | 0,09242527 | 0,23259929 | 1,38211141 | 2,04180178 | 3,06816231 | 0,27673071 | 0,08808252 | 0,85756483 | 0,11511972 | 0,39746555 | 0,22290737 | 0,06869082 | 0,48405979 | 1,49275933 | 0,64964997 | 0,85255862 | 2,7009082 | 0,92420938 | 0,07121721 | 20,393539 | 12,7535737 | 2,59458619 |
| 0,00032384 | | 0,13448339 | 0,34250103 | 0,37990033 | 0,38410363 | 1,70627509 | 0,89349347 | 0,42177943 | 0,20623338 | 1,51917679 | 0,26283727 | 0,68063752 | 0,75284843 | 0,10052593 | 0,3008461 | 0,98138204 | 1,02336837 | 0,31897393 | 1,47302568 | 0,78544606 | 0,1680408 | 0,3350895 | 1,47171341 | 7,46166212 |
Di seguito puoi vedere come appaiono i miei dati nel modulo X, Y, Z ma ho 23 punti da Y e centinaia di righe.
| sì | y1 | y2 | y3 | y4 |
| x1 | z11 | z21 | z31 | z41 |
| x2 | z12 | z22 | z32 | z42 |
Vorrei visualizzare le coordinate in un grafico 3D.
Questo è il problema, perché per mostrarti una tabella visualizzata XYZ, devo espandere questa matrice. Per esempio:
| x1 | y1 | z11 |
| x1 | y1 | z12 |
| x1 | y1 | z13 |
| | | |
| x1 | y2 | z21 |
| x1 | y2 | z22 |
| x1 | y2 | z23 |
E così via.. Ma non ho idea di come farlo in JMP e di tracciarlo. So che esiste un modo automatico per farlo utilizzando Origin, ma devo farlo utilizzando JMP. Potresti capire cosa intendo?
Grazie.
Re: Tracciare un diagramma 3DÈ necessario fornire ulteriori spiegazioni sui tuoi dati.
Ti aspetti che tutti i dati vengano visualizzati in un grafico oppure ciascuna colonna Z, Z2, Z2, ecc. Indica un grafico separato da creare?
Poiché ogni punto visualizzato in un grafico 3D è definito dalle 3 dimensioni, puoi mostrare come verrebbero visualizzati i valori nella tabella visualizzata se la tabella fosse sotto forma di
Re: Tracciare un diagramma 3DIn genere, le piattaforme JMP prevedono che i valori di ciascuna variabile (in questo caso "x", "y" e "z") siano nella propria colonna. Quindi per i tuoi dati penso che questo sarebbe:

Potresti quindi provare, ad esempio, 'Grafici > Grafico a dispersione 3D '.
È inoltre possibile utilizzare JMP per riorganizzare i dati in questa forma, manualmente o utilizzando uno script. Ma i dettagli dipenderanno esattamente da come li leggi da Excel.