Zeichnen Sie ein 3D-DiagrammHallo,
Ich versuche, ein 3D-Diagramm zu zeichnen, aber es gelingt mir nicht. Ich habe die Daten in Excel so:
| | Y | 4,15815757 | 10.5410784 |
| X | | Z1 | Z2 |
| 0,00038225 | | 0,04740562 | 0,09242527 |
| 0,00032384 | | 0,13448339 | 0,34250103 |
Aber ich habe viele Zeilen und Spalten. Dies ist nur ein Beispiel. Ich würde mich über jede Hilfe freuen.
Danke.
Betreff: 3D-Diagramm zeichnen'Daten.xlsx' hat 23 Y-Werte, 444 X-Werte und jeweils einen Z-Wert (insgesamt 10212 Werte). Sollte 'dtFinal' also nicht sein:
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];
)
);
So etwas geben?

Ohne etwas über den Datenkontext und das, was Sie versuchen, zu wissen, stelle ich mir vor, dass informativere Visualisierungen möglich sind.
Betreff: 3D-Diagramm zeichnenDer Code funktioniert ziemlich gut. Ich habe festgestellt, dass ich nicht genügend Speicher habe, um alle Zeilen auszuführen 104.284.944 , deshalb ist es nicht gelaufen.
Ich verwende JMP 12.
Vielen Dank.
Betreff: 3D-Diagramm zeichnenIch habe Ihre Excel-Datei heruntergeladen und gespeichert.Dann habe ich das JSL-Skript auf die neue Datei verwiesen.Ich musste auch die Zeile im Code ändern
Worksheets( "example" ),
Zu
Worksheets( "JMP" ),
weil Sie den Namen der Tabelle in der Arbeitsmappe geändert haben.
Ich habe das Programm nicht bis zur vollen Anzahl von 104.284.944 Zeilen ausgeführt, die die JSL erzeugen wird, wenn sie vollständig ausgeführt wird, aber ich habe es bis zu einer geringeren Anzahl ausgeführt, um mir selbst zu beweisen, dass der Code funktionieren würde.
Wenn die obige Änderung nicht das Problem ist, wäre die nächste Frage, die ich hätte: Welche JMP-Version verwenden Sie?
Betreff: 3D-Diagramm zeichnenVielen Dank für Ihre Hilfe, ich habe es wirklich geschätzt.
Wenn ich das Skript jedoch ausführe, wird in Zeile 70 ein Fehler angezeigt, der besagt, dass der Wert in der Spalte X nicht ermittelt werden kann, da die Anzahl der Zeilen (0) ungültig ist.
Ich habe die Excel-Daten angehängt, an denen ich arbeite. Würde es Ihnen etwas ausmachen, einen Blick darauf zu werfen? Ich bin ein neuer Benutzer in JSL, deshalb habe ich nicht viel Erfahrung.
Danke schön.
Betreff: 3D-Diagramm zeichnenMein erster Vorschlag ist, Add Rows() weiter nach oben in der Schleife zu verschieben.Add Rows() ist eine ziemlich langsame Funktion. Wenn Sie also alle Zeilen, die Sie für die Datentabelle benötigen, direkt nach der anfänglichen New Table() hinzufügen könnten, würde das das Programm viel schneller machen.Das würde auch bedeuten, dass Sie einen Gesamtzeilenzähler hinzufügen müssten, um zu verfolgen, an welcher Zeile Sie arbeiten, anstatt N Rows() zu verwenden.
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>Betreff: 3D-Diagramm zeichnenIch habe nur noch eine Frage. Gibt es eine Möglichkeit, die Ausführung dieses Codes zu beschleunigen, da ich es mit großen Datenmengen zu tun habe und die Ausführung Stunden dauert und manchmal auch nicht.
Mein Notebook ist ein Asus, Windows 7, 64 Bit, 4 GB (RAM) und 197 GB Speicher.
Ich glaube also nicht, dass das Problem an meinem Computer liegt, oder?
Danke.
Betreff: 3D-Diagramm zeichnenVielen Dank. Das ist genau das, was ich tun wollte und es funktioniert perfekt.
Betreff: 3D-Diagramm zeichnenIch habe basierend auf Ihrer Beschreibung eine Beispiel-Excel-Datei erstellt und diese an diesen Eintrag angehängt.Anschließend habe ich das folgende JSL entwickelt, um es einzulesen und den 3D-Plot der Daten zu erstellen.Ich hoffe, das ist es, was Sie wollen

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>
Stellen Sie sicher, dass Sie den Pfad in der JSL so ändern, dass er auf den Speicherort der angehängten Excel-Datei verweist
Betreff: 3D-Diagramm zeichnenVielen Dank für Ihre Antwort. Ich zeige Ihnen, wie meine Daten in Excel aussehen:
| | 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 |
Unten können Sie sehen, wie meine Daten in der Form X,Y,Z aussehen, aber ich habe 23 Punkte aus Y und Hunderte Zeilen.
| j | y1 | y2 | y3 | y4 |
| x1 | z11 | z21 | z31 | z41 |
| x2 | z12 | z22 | z32 | z42 |
Ich möchte die Koordinaten in einem 3D-Diagramm anzeigen.
Das ist das Problem, denn um es Ihnen in einer angezeigten Tabelle XYZ anzuzeigen, muss ich diese Matrix erweitern. Zum Beispiel:
| x1 | y1 | z11 |
| x1 | y1 | z12 |
| x1 | y1 | z13 |
| | | |
| x1 | y2 | z21 |
| x1 | y2 | z22 |
| x1 | y2 | z23 |
Und so weiter.. Aber ich habe keine Ahnung, wie man das in JMP macht und wie man es darstellt. Ich weiß, dass es eine automatische Möglichkeit gibt, dies mit Origin zu tun, aber ich muss JMP verwenden. Könnten Sie verstehen, was ich meine?
Danke.
Betreff: 3D-Diagramm zeichnenEs bedarf einer weiteren Erläuterung Ihrer Daten.
Erwarten Sie, dass alle Daten in einem Diagramm angezeigt werden, oder bezeichnet jede Z-Spalte, Z2, Z2 usw. ein separates Diagramm, das erstellt werden soll?
Da jeder angezeigte Punkt in einem 3D-Diagramm durch die drei Dimensionen definiert wird, können Sie bitte zeigen, wie Ihre Werte in der angezeigten Tabelle angezeigt würden, wenn die Tabelle die Form hätte
Betreff: 3D-Diagramm zeichnenIm Allgemeinen erwarten JMP-Plattformen, dass die Werte für jede Variable (in diesem Fall „x“, „y“ und „z“) in einer eigenen Spalte stehen. Was Ihre Daten betrifft, denke ich, dass dies so wäre:

Dann könnten Sie es beispielsweise mit „Grafiken >“ versuchen Streudiagramm 3D '.
Sie können JMP auch verwenden, um die Daten manuell oder mithilfe eines Skripts in dieser Form neu anzuordnen. Die Details hängen jedoch davon ab, wie genau Sie es aus Excel einlesen.