Wie erstellt man Windströmungs-/Aerodynamikdiagramme?

Ich brauche etwas Hilfe, um gut aussehende vektorisierte Bilder dieser Art von Themen zu erstellen:

Windströmungsbeispiel 1

Windströmungsbeispiel 2

Ich arbeite viel mit LaTeX, wenn es um Schriftsatz geht, daher habe ich einige grundlegende Erfahrungen mit Tikz. Ich habe jedoch das Gefühl, dass ich mich ein wenig verloren fühle, wenn ich komplizierte Bilder wie die oben genannten erstellen muss.

Ich würde mich sehr freuen, wenn mich jemand in die richtige Richtung weisen könnte, wie ich diese Art von Bildern erstellen könnte, vorzugsweise mit kostenloser Software.

Benötigen Sie die Möglichkeit, Formeln einzugeben oder nur zu zeichnen?
Um mit dem Zeichnen zu beginnen, würde es ausreichen, ich denke, ich könnte immer noch welche in die Nachbearbeitung einfügen.
Wenn Sie mit der Auswertung der Fragen fertig sind, ist es wichtig, die Frage zu akzeptieren. Sonst sendet es das falsche Signal. Akzeptieren Sie die Frage, die Ihrer Idee am nächsten kommt. Fühlen Sie sich frei, auch nur eine der weniger bewerteten Fragen anzunehmen. Da diese Frage auch nette Nebenfragen hat, könnten Sie spezifischere Werkzeugkombinationen stellen. Sehr angenehme Frage, danke dafür.
Fertig! Ich werde hoffentlich bald Folgefragen haben, die spezifischer sind. Soll ich dann eine neue Frage öffnen und auf diese verlinken?
wenn Sie denken, dass das Verlinken hilft. Denken Sie daran, zu recherchieren, besser recherchierte Fragen führen zu besseren Antworten.

Antworten (4)

Grafikanwendungen mit Vektorausgabe sind verfügbar. Ich habe folgende Anwendungen recht erfolgreich eingesetzt:

  • Mathematica <- meine Präferenz, es kann Bilder wie oben machen
  • Matlab (denken Sie daran, eps zu exportieren)
  • Python mit matplotlib
  • Ahorn
  • PSTricks
  • Illustrator
  • Xara
  • Inkscape
  • Autocad

Es ist schwierig, dass Sie möglicherweise auch 3D-Apps oder Grafik-Apps verwenden müssen, die ich vorschlage:

  • yEd , verschiedene Diagrammlayouts und kann ohne Installation aus dem Internet ausgeführt werden.
  • Gephi , kraftgerichtete Graphen
  • Maya, 3DsMax mit Vektordarstellung
  • Creo, NX, Catia, SolidWorks...

Normalerweise ist es produktiver, ein Tool zu verwenden, das die Dinge tatsächlich grafisch darstellen kann, und dann die EPS-Datei zur späteren Fertigstellung in ein Grafiker-Tool wie Illustrator zu importieren. Der wirkliche Vorteil ist, dass Sie mit den Grafiken spielen können, bevor Sie sich einmischen, sodass Änderungen einfach sind.

Es ist auch möglich, Dinge in Illustrator selbst zu zeichnen, wenn Sie möchten, etwas Code, der Ihnen auf Ihrem Weg hilft.

Ressourcen

Hier ist eine kurze Liste von Dingen, bis ich Zeit habe, einige geeignete Beispiele zu finden (laminare Strömung rechts).

Einige Beispiele mit ähnlichen Komponenten (möglicherweise müssen Sie weitere Dinge hinzufügen, aber hier sind einige Teile des Puzzles):

Am besten schnappst du dir einen Vektor-Editor und lernst, wie man ihn benutzt. Die obigen Beispiele scheinen nicht kompliziert zu sein, und ein grundlegendes Verständnis des Zeichnens von Vektoren würde die Aufgabe gut erfüllen.

Wenn Sie eines ausprobieren, würde ich von Illustrator oder Corel Draw abraten. Obwohl beide leistungsstarke und beliebte Werkzeuge der Wahl sind, werden sie für einen Anfänger entmutigend erscheinen. Inkscape ist eine gute Wahl. Es ist kostenlos und es sollte kein Problem sein, es zu lernen.

Inkscape hat den zusätzlichen Vorteil, dass es den Export nach PDF + Latex unterstützt. Sie erhalten PDF-Grafiken mit Latex-Texten.
Lassen Sie mich das klarstellen: Wenn ich eine Tragflächenform in Python mit Matplotlib und einem Geschwindigkeitsprofil wie dem im zweiten Bild oben zeichne, kann ich sie in Inkscape importieren und dann Änderungen daran vornehmen, z die Grundstücke?
@Jack ja sowie die Möglichkeit, Linienbreiten neu einzufärben, Legenden zu verschieben usw.
Super, das werde ich ausprobieren!

Zuerst: .PY + Matplotlib -> .SVG

Dann .SVG -> Inkskape

.SVG ist jedoch leicht genug zu lernen, um .PY -> .SVG zu wechseln

Sie können auch .PY + Matplotlib -> .PDF verwenden. Inkscape würde das auch öffnen.

Vielen Dank für Ihren Kommentar. Also arbeite ich in Python und speichere es als SVG-Datei und öffne es dann mit Inkscape?
Xor, während Sie dabei sind, könnten Sie ein Beispiel machen oder sollte ich. +1 Auf jeden Fall kann Python auch direkt mit Inkscape kommunizieren, aber vielleicht ist dies eine andere Frage?

Haftungsausschluss:

  1. Normalerweise programmiere ich nicht in Python, es sei denn, ich muss den Code von jemand anderem reparieren
  2. Ich habe Matplotlib noch nie verwendet - dies ist mein erster Versuch, es zu verwenden, und da es interessant aussah, der EINZIGE Grund, warum ich diese Antwort poste.

Jetzt eine robustere Antwort: (Nicht, dass ich gerne Hausaufgaben für Doktoranden mache...)

Alles hier wurde von der Matplotlib-Website (siehe Beispiele) und von Stack Overflow (matplotlib save fig image trim) gestohlen – glatt gestohlen. Ich habe es nur kopiert/eingefügt und getestet.

Die resultierende out.svg-Datei kann direkt in Inkscape geöffnet werden. Das Bild ist eine Gruppe/Gruppen kleinerer Bilder. Klicken Sie auf einen beliebigen Teil des Bildes und verwenden Sie dann die Option „Gruppierung aufheben“ von Inkscape. Möglicherweise müssen Sie die Gruppierung einige Male aufheben, um einen Teil des Bildes direkt bearbeiten zu können.

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
        linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)

#plt.show()

fig.set_size_inches(4,3) 

fig.set_dpi(40)

fig.savefig('out.svg', transparent=True, bbox_inches='tight', pad_inches=0)