Zeichnen Sie Knoten interaktiv mit Plotly (Python)

Zeichnen Sie Knoten interaktiv mit Plotly (Python)

1. Zuallererst

Dieses Mal werde ich den Knoten mit Plotly in einem dreidimensionalen Raum zeichnen. Ich hoffe, es wird Ihnen beim Lernen helfen.

Sie können so etwas wie ↓ tun.

See the Pen dyoyxKW by Sota Misawa (@mitawaut) on CodePen.

Quelle (GitHub)

2. Überprüfen

Ich werde die minimal notwendige Überprüfung durchführen, um den Knoten zu veranschaulichen.

** Knoten ** (Knoten) bezieht sich auf $ S ^ 1 $, das linear in $ S ^ 3 $ eingebettet ist. Da $ S ^ 3 $ als $ \ mathbb {R} ^ 3 \ cup \ {\ infty \} $ angesehen werden kann, wenn $ S ^ 1 $ $ \ infty $ nicht enthält, dann $ \ Sie können sich das als $ S ^ 1 $ vorstellen, eingebettet in mathbb {R} ^ 3 $.

Eine bekannte Methode zum Ausdrücken von Knoten ist ein Knoten entlang der zweidimensionalen Torusoberfläche $ \ mathbb {T} ^ 2 . Betrachten Sie die geschlossene gekrümmte Oberfläche, die durch die folgende Abbildung definiert ist, als Torus: $\mathbb{T}^2 : [-\pi , \pi]^2 \ni (\phi,\ \theta)\longmapsto \bigl(\cos \phi \ (3+\cos \theta),\ \sin \phi \ (3+\cos \theta),\ -\sin \theta \bigr)\in \mathbb{R}^3$$

torus.png

Verwenden eines Paares von zwei ganzen Zahlen $ (n, \ m) $ auf einer geschlossenen Kurve in $ \ mathbb {T} ^ 2 $ (Erweiterung der Definition von $ \ mathbb {T} ^ 2 $ entsprechend), $ T(n,\ m) : [-\pi , \pi]\ni t \longmapsto \mathbb{T}^2(nt,\ mt) \in \mathbb{R}^3$

Überlegen Sie, was als dargestellt wird. Sie können sich das als Knoten vorstellen. Der folgende Satz ist in dieser Hinsicht bekannt.

** Satz. ** Für jeden nicht trivialen Knoten $ K $, der in $ \ mathbb {T} ^ 2 $ enthalten ist, existiert ein Paar von Primzahlen $ (n, \ m) $ für $ K. $ Entspricht $ T (n, \ m) $.

Aus diesem Theorem versuchen wir, $ T (n, \ m) $ als Knotenausdruck darzustellen. Unten ist ein Diagramm von $ T (2, \ 3) $. knot_on_torus.png

3. Implementierung

Dies ist der Beginn des Kochens für 5 Minuten. Da ipywidgets verwendet wird, wird ein Jupyter-Notebook empfohlen.

requirements.txt[Auszug]


ipython==7.12.0
numpy==1.18.1
plotly==4.4.1

Das Ziel ist es, $ n, \ m $ mit ipywidgets manipulieren zu können. Importieren Sie zunächst das, was Sie benötigen.


# import modules
import plotly.offline as offline
import plotly.graph_objs as go
import numpy as np
from ipywidgets import interactive, VBox, widgets
from IPython.display import display

offline.init_notebook_mode(connected=True)

Definieren Sie dann $ \ mathbb {T} ^ 2 $ und $ T (n, \ m) $. Dies implementiert wiederum nur die obige Diskussion so wie sie ist.

# functions
def torus(p, t):
    x = np.cos(p) * (3 + np.cos(t))
    y = np.sin(p) * (3 + np.cos(t))
    z = -np.sin(t)
    return (x, y, z)

def knot(n, m):
    theta = np.linspace(-np.pi, np.pi, 1000)
    p, t = n*theta, m*theta
    return torus(p, t)

Alles was Sie tun müssen, ist Handlung. Der Anfangswert ist $ (m, \ m) = (2, \ 3) $, und der Bereich der Schiebeleiste ist $ n $: -10 ~ 10, $ m $: 0 ~ 10.

fig = go.FigureWidget()
scatt = fig.add_scatter3d()

def update(n=2, m=3):
    with fig.batch_update():
        (cx, cy, cz) = knot(n, m)
        scatt.data[0].x=cx
        scatt.data[0].y=cy
        scatt.data[0].z=cz
        scatt.data[0].mode='lines'
        scatt.data[0].line=dict(
                    width=10,
                    color='green')

vb = VBox((fig, interactive(update, n=(-10, 11, 1), m=(0, 10, 1))))
display(vb)

Wenn Folgendes angezeigt wird und sich der Knoten gleichzeitig mit dem Spielen mit dem Schieberegler ändert, sind Sie erfolgreich. knot_2_3.png

4. Schließlich

Wenn Sie es nicht sehen, überprüfen Sie die Version um ipython. ~~ Ich fand es unangenehm, dass der erste Beitrag von ein paar Minuten Qualität war, also habe ich einen zusätzlichen Abschnitt namens review ~~ erstellt

Recommended Posts

Zeichnen Sie Knoten interaktiv mit Plotly (Python)
Zeichnen Sie ein Diagramm mit Python
Zeichnen Sie MP3-Wellenformen in Python
Zeichnen Sie die Festplatte von Poancare in Python
Zeichnen Sie "Farn programmgesteuert zeichnen" in Python
Zeichne die Yin-Funktion in Python
Zeichne ein Herz in Python
Zeichnen Sie Sinuswellen mit Blender Python
Zeichnen Sie eine Streudiagrammmatrix mit Python
Zeichnen Sie ein CNN-Diagramm in Python
Zeichnen Sie Nozomi Sasaki in Excel mit Python
Mit Python Teil 2 ein Herz zeichnen (SymPy Edition)
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Anzeigen des Candlestick-Diagramms in Python (Plotly Edition)
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Zeichnen Sie Diagramme in Julia ... Überlassen Sie die Diagramme Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
Sortierte Liste in Python