¿Cómo hacer diagramas aerodinámicos/de flujo de viento?

Necesito ayuda sobre cómo crear buenas imágenes vectorizadas de este tipo de temas:

flujo de viento ejemplo 1

ejemplo de flujo de viento 2

Trabajo mucho con LaTeX cuando se trata de composición tipográfica, así que tengo cierta experiencia básica con Tikz. Sin embargo, siento que si necesito hacer imágenes complicadas como las de arriba, me encuentro un poco perdido.

Apreciaría mucho si alguien pudiera orientarme en la dirección correcta sobre cómo podría hacer este tipo de imágenes, preferiblemente usando software libre.

¿Necesita la capacidad de ingresar fórmulas o simplemente dibujar?
Para empezar con el dibujo sería suficiente, supongo que siempre podría insertar algo en el procesamiento posterior.
Cuando haya terminado de evaluar las preguntas, es importante aceptar la pregunta. De lo contrario, envía la señal incorrecta. Acepte la pregunta que se sienta más cercana a responder a su idea. Siéntase libre de aceptar incluso una de las preguntas menos votadas. Dado que esta pregunta también tiene buenas preguntas secundarias, puede hacer combinaciones de herramientas más específicas. Pregunta muy agradable gracias por eso.
¡Hecho! Espero tener preguntas de seguimiento pronto, que son más específicas. ¿Debería entonces abrir una nueva pregunta y vincular a esta?
si crees que la vinculación ayuda. Recuerde hacer la investigación, las preguntas mejor investigadas conducen a mejores respuestas.

Respuestas (4)

Hay disponibles aplicaciones gráficas que generan resultados vectoriales. He usado las siguientes aplicaciones con bastante éxito:

  • Mathematica <- mi preferencia puede hacer imágenes como las de arriba
  • Matlab (recuerda exportar eps)
  • Python usando matplotlib
  • Arce
  • PSTricks
  • ilustrador
  • Xara
  • paisaje de tinta
  • autocad

Es posible que también necesite usar aplicaciones 3D o aplicaciones gráficas, sugiero:

  • yEd , varios diseños de gráficos y se puede ejecutar desde Internet sin necesidad de instalación.
  • Gephi , grafos dirigidos por fuerzas
  • Maya, 3DsMax con representación vectorial
  • Creo, NX, Catia, Solidworks...

Por lo general, es más productivo usar alguna herramienta que realmente pueda graficar cosas como base y luego importar el archivo EPS a una herramienta de artistas gráficos como Illustrator para su posterior finalización. El beneficio real es que puede jugar con los gráficos antes de involucrarse, por lo que cambiar es fácil.

También es posible graficar cosas por su cuenta en Illustrator si lo desea, algún código para ayudarlo en su camino.

Recursos

Aquí hay una lista rápida de cosas hasta que tenga tiempo de encontrar algunos ejemplos adecuados (flujo laminar a la derecha).

Algunos ejemplos con componentes similares (es posible que deba agregar más cosas, pero aquí hay algunas partes del rompecabezas):

Lo mejor que puedes hacer es elegir un editor de vectores y aprender a usarlo. Los ejemplos anteriores no parecen complicados, y una comprensión básica de dibujar vectores haría el trabajo bien.

Si va a probar uno, le desaconsejaría Illustrator o Corel Draw. Si bien ambas son herramientas de elección poderosas y populares, parecerán abrumadoras para un principiante. Inkscape es una buena opción. Es gratis y aprenderlo no debería ser un problema.

Inkscape tiene el beneficio adicional de admitir la exportación a PDF + Latex. Obtienes gráficos PDF con textos Latex.
Así que permítanme aclarar esto: si trazo una forma aerodinámica en Python usando Matplotlib y un perfil de velocidad como el de la segunda imagen de arriba, ¿puedo importarlos a Inkscape y luego realizar modificaciones en ellos como 'sesgo' y rotación de las parcelas?
@Jack sí, así como la capacidad de cambiar el color, cambiar el ancho de línea, mover leyendas, etc.
¡Genial, lo intentaré!

Primero: .PY + Matplotlib -> .SVG

Luego, .SVG -> Inkskape

Sin embargo, .SVG es bastante fácil de aprender a ir .PY -> .SVG

También puede hacer .PY + Matplotlib -> .PDF. Inkscape también abriría eso.

Gracias por tu comentario. ¿Así que trabajo en python y lo guardo como un archivo svg, luego lo abro con Inkscape?
Xo, mientras está en esto, puede hacer un ejemplo o debería yo. +1 en cualquier caso, Python también puede hablar directamente con Inkscape, pero tal vez esta sea una pregunta diferente.

Descargos de responsabilidad:

  1. Normalmente no programo en Python a menos que tenga que arreglar el código de otra persona
  2. Nunca he usado Matplotlib; este es mi primer intento de usarlo y, dado que parecía interesante, la ÚNICA razón por la que publico esta respuesta.

Ahora una respuesta más sólida: (No es que me guste hacer la tarea para los candidatos a doctorado...)

Todo aquí fue robado, completamente robado, del sitio web matplotlib (ver Ejemplos) y de Stack Overflow (matplotlib save fig image trim). Todo lo que hice fue copiarlo/pegarlo y probarlo.

El archivo out.svg resultante se puede abrir directamente en Inkscape. La imagen es un Grupo/Grupos de imágenes más pequeñas. Haga clic en cualquier parte de la imagen, luego use la opción 'Desagrupar' de Inkscape. Puede que tenga que desagrupar varias veces para poder manipular directamente parte de la imagen.

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)