Comment faire des diagrammes de flux de vent / aérodynamique?


8

J'ai besoin d'aide pour créer de belles images vectorisées de ces types de thèmes:

exemple de flux de vent 1

exemple de flux de vent 2

Je travaille beaucoup avec LaTeX en ce qui concerne la composition, j'ai donc une expérience de base avec Tikz. Cependant, je pense que si je dois faire des images compliquées comme celles ci-dessus, je me retrouve un peu perdu.

J'apprécierais beaucoup que quelqu'un puisse m'orienter dans la bonne direction sur la façon dont je pourrais procéder pour créer ce type d'images, de préférence en utilisant un logiciel libre.


Avez-vous besoin de pouvoir saisir des formules ou simplement dessiner?
Ryan

Pour commencer avec le dessin suffirait, je suppose que je pourrais toujours en insérer dans le post-traitement.
Dipole

Lorsque vous avez terminé d'évaluer les questions, il est important d'accepter la question. Sinon, il envoie le mauvais signal. Acceptez la question qui vous semble la plus proche pour répondre à votre idée. N'hésitez pas à accepter même l'une des questions les moins votées. Étant donné que cette question comporte également de belles questions secondaires, vous pouvez demander des combinaisons d'outils plus spécifiques. Question très agréable merci pour cela.
joojaa

Terminé! J'espère que j'aurai bientôt des questions complémentaires, qui sont plus spécifiques. Dois-je ensuite ouvrir une nouvelle question et créer un lien vers celle-ci?
Dipole

si vous pensez que la liaison est utile. N'oubliez pas de faire la recherche, de meilleures questions ré-apprises conduisent à de meilleures réponses.
joojaa

Réponses:


11

Des applications graphiques qui produisent une sortie vectorielle sont disponibles. J'ai utilisé avec succès les applications suivantes:

  • Mathematica <- ma préférence, il peut faire des images comme ci-dessus
  • Matlab (n'oubliez pas d'exporter eps)
  • Python utilisant matplotlib
  • Érable
  • PSTricks
  • Illustrateur
  • Xara
  • Inkscape
  • Autocad

Il est possible que vous deviez utiliser des applications 3D ou des applications graphiques, je suggère:

  • Oui , diverses dispositions graphiques et peuvent être exécutées sur Internet sans aucun instal nécessaire.
  • Gephi , graphes dirigés par la force
  • Maya, 3DsMax avec rendu vectoriel
  • Creo, NX, Catia, Solidworks ...

Habituellement, il est plus productif d'utiliser un outil qui peut réellement représenter graphiquement les choses comme base, puis importer le fichier EPS dans un outil d'artistes graphiques comme illustrateur pour une finalisation ultérieure. Le véritable avantage est que vous pouvez jouer avec les graphiques avant de vous impliquer, donc changer est facile.

Il est également possible de créer des graphiques par vous-même dans Illustrator si vous le souhaitez, du code pour vous aider sur votre chemin.

Ressources

Voici une liste rapide de choses jusqu'à ce que j'aie le temps de trouver des exemples appropriés (flux laminaire à droite).

Quelques exemples avec des composants similaires (vous devrez peut-être ajouter plus de choses, mais voici quelques parties du puzzle):


6

Le mieux est de choisir un éditeur de vecteur et d'apprendre à l'utiliser. Les exemples ci-dessus ne semblent pas compliqués, et une compréhension de base des vecteurs de dessin ferait très bien l'affaire.

Si vous en essayez un, je vous déconseille Illustrator ou Corel Draw. Bien que les deux soient des outils de choix puissants et populaires, ils sembleront intimidants pour un débutant. Inkscape est un bon choix. C'est gratuit et l'apprendre ne devrait pas être un problème.


2
Inkscape a l'avantage supplémentaire de prendre en charge l'exportation vers PDF + Latex. Vous obtenez des graphiques PDF avec des textes en latex.
jnovacho

Donc, permettez-moi de clarifier les choses: si je trace une forme de profil aérodynamique en Python en utilisant Matplotlib et un profil de vitesse comme celui de la deuxième image ci-dessus, puis-je les importer dans Inkscape, puis y apporter des modifications telles que l'inclinaison et la rotation de les parcelles?
Dipole

@Jack yes ainsi que la possibilité de recolorer les largeurs de ligne de changement déplacer les légendes, etc.
joojaa

Super, je vais essayer!
Dipole

2

Premièrement: .PY + Matplotlib -> .SVG

Ensuite, .SVG -> Inkskape

Cependant, .SVG est assez facile à apprendre pour aller .PY -> .SVG

Vous pouvez également faire .PY + Matplotlib -> .PDF. Inkscape ouvrirait cela également.


Merci pour votre commentaire. Je travaille donc en python et je l'enregistre en tant que fichier svg, puis je l'ouvre avec Inkscape?
Dipole

1
Pendant que vous y êtes, vous pourriez faire un exemple ou devrais-je I. +1 dans tous les cas, python peut également parler directement avec inkscape mais peut-être que c'est une question différente à poser?
joojaa

1

Avertissements:

  1. Je ne programme généralement pas en Python, sauf si je dois corriger le code de quelqu'un d'autre
  2. Je n'ai jamais utilisé Matplotlib - c'est ma première tentative d'utilisation et, comme il semblait intéressant, c'est la SEULE raison pour laquelle je poste cette réponse.

Maintenant une réponse plus robuste: (Pas que j'aime faire mes devoirs pour les doctorants ...)

Tout a été volé - à plat volé - sur le site Web de matplotlib (voir les exemples) et de Stack Overflow (matplotlib save fig image trim). Je n'ai fait que le copier / coller et le tester.

Le fichier out.svg résultant peut être ouvert directement dans Inkscape. L'image est un groupe / des groupes d'images plus petites. Cliquez sur n'importe quelle partie de l'image, puis utilisez l'option «Dissocier» d'Inkscape. Vous devrez peut-être vous dissocier plusieurs fois pour pouvoir manipuler directement une partie de l'image.

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)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.