[PYTHON] Ich möchte die Grafik in 3D sehen! Ich kann einen solchen Traum wahr werden lassen.

Du willst es sehen, oder?

Dreiecksfunktionen, logarithmische Funktionen, Zykloiden ... Es gibt so viele verschiedene Funktionen, Figuren und Graphen auf dieser Welt. Sie möchten ein solches Diagramm in 3D sehen, oder?

Und was wirst du jetzt tun?

Dieses Mal möchte ich Blender und Excel verwenden. Fügen Sie die Koordinatendaten in die Excel-Datei ein und erstellen Sie ein darauf basierendes Objekt mit Blender. image.png

Jetzt wo ich verstehe, wie es funktioniert ...

Willst du es sofort schaffen?

Entwicklungsumgebung

windows 10 python 3.7 Blender 2.8 pip 20.2.1

Erstellen Sie Daten in Excel

Lassen Sie uns zunächst eine Bibliothek installieren, die Excel-Dateien ändert.

$pip install openpyxl

Der Code sieht so aus

function_3Dgraph.py


import openpyxl
import math

class funcdate():
    def create_wb(self,wb_name):
        new_file=openpyxl.Workbook() #Erstellen Sie Daten für eine Excel-Datei.
        new_file.save(wb_name+'.xlsx') #Speichern Sie es einmal.
        print('Excel-Datei wird erstellt')
        return new_file
    
    def write_wb(self,cell_name,cell_value,file_name):
        file=openpyxl.load_workbook(file_name+'.xlsx',data_only=True) #Laden Sie die Excel-Datei.
        new_wb=file.active #Laden Sie das Blatt.
        new_wb[cell_name]=cell_value #cell_mane(Zum Beispiel A1)Geben Sie einen Wert in die Zelle ein.

    def write_func(self,t,file_name):
        file=openpyxl.load_workbook(file_name+'.xlsx',data_only=True)
        new_wb=file.active
        print(new_wb)
        for i in range(1,t+1):
            if(i==0):
                i=1
            x=math.cos(i*math.pi/180) #Die Formel hier kann alles sein.
            y=math.sin(i*math.pi/180) #Die Formel hier kann alles sein.
            new_wb['A'+str(i)]=i #Ich werde Daten in jede Koordinate einfügen.
            new_wb['B'+str(i)]=x
            new_wb['C'+str(i)]=y
            print(new_wb['A'+str(i)].value,new_wb['B'+str(i)].value,new_wb['C'+str(i)].value)
            
        else:
            file.save(file_name+'.xlsx')
            print('Ich konnte ausfüllen')

    def get_func(self,file_name,t):
        file=openpyxl.load_workbook(file_name+'.xlsx',data_only=True)
        wb=file.active
        graph_t=wb['A'+str(t)].value #Geben Sie den Wert jeder Zelle in jede Koordinate ein.
        graph_x=wb['B'+str(t)].value
        graph_y=wb['C'+str(t)].value
        a=[graph_t,graph_x,graph_y]
        return a

    
test=funcdate()
test.create_wb('test_function')
test.write_func(360,'test_function')
print(test.get_func('test_function',10))

Lass es uns jetzt laufen lassen.

$python function_3Dgraph.py

Wenn Sie es ausführen, sollten Sie eine Excel-Datei haben, also öffnen Sie es bitte. image.png Es ist in Ordnung, wenn es so in der Tabelle steht. Übrigens sieht es in einem Diagramm so aus. ・ X-Achse und Y-Achse sind getrennt image.png   ・ X-Achse und Y-Achse kombiniert image.png

Erstellen Sie mit Blender ein Diagramm

Lassen Sie uns zuerst Blender herunterladen. Download Blender Starten Sie es nach dem Herunterladen und öffnen Sie den Python-Editor. ↓ Hier image.png Versuchen Sie dann, den folgenden Code einzugeben. Es ist leicht zu erkennen, ob Sie den ersten generierten Cube (x-Taste) löschen.

$import bpy
$bpy.ops.mesh.primitive_uv_sphere_add(segments=32, ring_count=16, radius=1.0, calc_uvs=True, enter_editmode=False, align='WORLD', location=(0.0, 0.0, 0.0), rotation=(0.0, 0.0, 0.0))

Wenn eine Kugel an den Koordinaten (0.0, 0.0, 0.0) erscheint, ist sie erfolgreich. image.png

Fügen wir es jetzt hinzu

function_3Dgraph.py


import openpyxl
import math
import bpy

class funcdate():
    def create_wb(self,wb_name):
        new_file=openpyxl.Workbook()
        new_file.save(wb_name+'.xlsx')
        print('Excel-Datei wird erstellt')
        return new_file
    
    def write_wb(self,cell_name,cell_value,file_name):
        file=openpyxl.load_workbook(file_name+'.xlsx',data_only=True)
        new_wb=file.active
        new_wb[cell_name]=cell_value

    def write_func(self,t,file_name):
        file=openpyxl.load_workbook(file_name+'.xlsx',data_only=True)
        new_wb=file.active
        print(new_wb)
        for i in range(1,t+1):
            if(i==0):
                i=1
            x=math.cos(i*math.pi/180)
            y=math.sin(i*math.pi/180)
            new_wb['A'+str(i)]=i
            new_wb['B'+str(i)]=x
            new_wb['C'+str(i)]=y
            print(new_wb['A'+str(i)].value,new_wb['B'+str(i)].value,new_wb['C'+str(i)].value)
            
        else:
            file.save(file_name+'.xlsx')
            print('Ich konnte ausfüllen')

    def get_func(self,file_name,t):
        file=openpyxl.load_workbook(file_name+'.xlsx',data_only=True)
        wb=file.active
        graph_t=wb['A'+str(t)].value
        graph_x=wb['B'+str(t)].value
        graph_y=wb['C'+str(t)].value
        a=[graph_t,graph_x,graph_y]
        return a

    
test=funcdate()
test.create_wb('test_function')
test.write_func(360,'test_function')
for i in range(1,360):
     bpy.ops.mesh.primitive_uv_sphere_add(segments=32, ring_count=16, radius=1.0, calc_uvs=True, enter_editmode=False, align='WORLD', location=test.get_func('test_function',i), rotation=(0.0, 0.0, 0.0))


Die bpy-Bibliothek kann nur mit Blender verwendet werden. Führen Sie sie daher mit Blender aus.

** und davor ** Lassen Sie uns die openpyxl-Bibliothek in Blender verfügbar machen.

Detaillierte Erklärung zum Einfügen

Beginnen Sie als Administrator, um openpyxl mit Blender zu verwenden. (Weil gesagt wird, dass Sie keine Autorität haben ...)

Versetzen Sie Blender in den Skriptmodus, um die gerade erstellte Datei auszuführen. Du kannst immer noch gehen. image.png Öffnen Sie dann function_3Dgraph.py und führen Sie es aus. image.png

Wenn die Grafik herauskommt, ist es ein Erfolg! image.png (Blenders 1 m ist klein, daher schwer zu verstehen, aber es ist eine Sinuswelle mit einer Amplitude von 1. Es ist leichter zu verstehen, wenn die Amplitude auf 10 eingestellt ist.)

Nun, die Grafik wurde so vervollständigt.

Von Blender erstellte Excel-Dateien werden übrigens in C: \ Programme \ Blender Foundation \ Blender 2.83 gespeichert.

Beiseite

Hier ist eine kleine mathematische Geschichte ... Dieses Mal habe ich ein Diagramm erstellt, indem ich x und y mit der Mediatorvariablen t dargestellt habe. Die Formel sieht so aus.

 \left\{
\begin{array}{ll}
x=f(t) \\
y=g(t)
\end{array}
\right. 

Dadurch wird ein 3D-Diagramm von $ y = f (x) $ erstellt. Wenn $ t = z $ ist, kann $ ax = by = cz (a, b, c sind beliebige Konstanten) $ und eine dreidimensionale gerade Linie erstellt werden. … Bisher haben wir über orthogonale Graphen gesprochen. Was ist also mit dem Polarformat? Angenommen, Sie haben einen Ausdruck wie diesen:

r=f(θ)

image.png

Die durch diese Gleichung dargestellte gerade Linie wird in eine horizontale Achse (x-Achse) bzw. eine vertikale Achse (y-Achse) zerlegt. image.png

 \left\{
\begin{array}{ll}
x=f(θ) \cos(θ)\\
y=f(θ) \sin(θ)
\end{array}
\right. 

Jetzt können Sie einen Polardiagramm zeichnen.       Eigentlich ist es eine gute Idee, für all dies eine Excel-Datei zu verwenden. ~~ Wenn du es nicht benutzt, k ~~

Warum hast du es dann zum Beispiel benutzt ... image.png

Es wird verwendet, wenn der Graph eine solche Formel nicht versteht. Wenn die Excel-Datei Werte enthält, können Sie ein Diagramm erstellen, indem Sie auf diese verweisen.

image.png Ich denke, es schrumpft ein wenig, aber es ist okay. Es ist kein Problem, wenn Sie es mit n multiplizieren, wenn Sie den Wert annehmen ...

Nachwort

Dieses Mal habe ich versucht, mit Blender mithilfe von Excel ein 3D-Diagramm zu erstellen. Als nächstes möchte ich dieses Diagramm wie eine Animation verschieben.

Recommended Posts

Ich möchte die Grafik in 3D sehen! Ich kann einen solchen Traum wahr werden lassen.
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich möchte die zweite Zeile zum Spaltennamen in Pandas machen
Ich möchte in der Einschlussnotation drucken
Ich möchte mit matplotlib ein Diagramm mit Wellenlinien in der Mitte erstellen (ich möchte den Eindruck manipulieren).
(Matplotlib) Ich möchte ein Diagramm mit einer in Pixel angegebenen Größe zeichnen
Ich habe versucht, den Höhenwert von DTM in einem Diagramm anzuzeigen
Wenn Sie von Mia Nanasawas Bild geheilt werden möchten, klicken Sie auf die Twitter-API ♪
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich möchte mit Python ein Fenster erstellen
Ich möchte ein Spiel mit Python machen
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Ich möchte einen Lebenszyklus in der Aufgabendefinition von ECS festlegen
Python-Programm ist langsam! Ich möchte beschleunigen! In einem solchen Fall ...
Ich möchte den Dateinamen von DataLoader sehen
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Auch mit JavaScript möchte ich Python `range ()` sehen!
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit einem Roboter in Python arbeiten.
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte R-Datensatz mit Python verwenden
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
Kombinieren Sie Listen zu einem DataFrame mit Pandas
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Ich möchte die gültigen Zahlen im Numpy-Array ausrichten
Ich möchte vorerst eine Docker-Datei erstellen.
Ich wollte den AWS-Schlüssel nicht in das Programm schreiben
Ich habe versucht, eine Site zu erstellen, mit der die aktualisierten Informationen von Azure einfach angezeigt werden können
[Siehe im Bild] Wie ein Kaggle-Anfänger in 10 Minuten vom "Anfänger" zum "Mitwirkenden" aufsteigen kann.
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
[Twitter] Ich möchte die heruntergeladenen vergangenen Tweets (meines Kontos) in eine schöne CSV verwandeln
[Linux] Ich möchte das Datum wissen, an dem sich der Benutzer angemeldet hat
LINEbot-Entwicklung möchte ich den Betrieb in der lokalen Umgebung überprüfen
Ich möchte ein System erstellen, um zu verhindern, dass vergessen wird, den Schlüssel 1 festzuziehen
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ich möchte eine Parameterliste aus CloudFormation-Code (yaml) erstellen.
Ich möchte den G-Test in einem Monat Tag 1 bestehen
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Ich habe den Befehl gegeben, einen farbenfrohen Kalender im Terminal anzuzeigen
Ich möchte die Mühe der Eingabe beim Debuggen von Paizas Skill-Check-Beispiel in einer lokalen Umgebung wie Jupyter [Python] sparen.
Ich habe versucht, ein System zu erstellen, um den Programmführer automatisch zu erfassen → ihn an einem Tag im Kalender zu registrieren
Ich möchte das Pytest-Gerät als Bibliothek an einer anderen Stelle laden (Pytest ist möglicherweise nicht in der Umgebung vorhanden).
Ich möchte komplizierte vier Regeln in der IF-Anweisung der Django-Vorlage verwenden! → Verwenden Sie eine benutzerdefinierte Vorlage
[Hi Py (Teil 1)] Ich möchte vorerst etwas machen, also setze zuerst ein Ziel.
Ich möchte die Farbe ändern, indem ich auf den Streupunkt in matplotlib klicke
Ich möchte nur ein Signal vom Sub-Thread zum Haupt-Thread senden
[C-Sprache] Ich möchte Zufallszahlen im angegebenen Bereich generieren
Ich habe mir eine Möglichkeit ausgedacht, aus einem Foto ein 3D-Modell zu erstellen.