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

8

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

flujo de viento ejemplo 1

flujo de viento ejemplo 2

Trabajo mucho con LaTeX cuando se trata de composición tipográfica, así que tengo algo de 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 señalarme en la dirección correcta sobre cómo podría hacer este tipo de imágenes, preferiblemente utilizando software libre.

Dipolo
fuente
¿Necesita la capacidad de ingresar fórmulas o simplemente dibujar?
Ryan
Para comenzar con el dibujo sería suficiente, supongo que siempre podría insertar algunos en el procesamiento posterior.
Dipolo
Cuando termine de evaluar las preguntas, es importante aceptar la pregunta. De lo contrario, envía la señal incorrecta. Acepta la pregunta que se siente más cercana a responder tu idea. Siéntase libre de aceptar incluso una de las preguntas con menos votos. 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.
joojaa
¡Hecho! Espero tener preguntas de seguimiento pronto, que son más específicas. ¿Debería abrir una nueva pregunta y vincularla a esta?
Dipolo
si crees que vincular ayuda. Recuerde hacer la investigación, las preguntas mejor investigadas conducen a mejores respuestas.
joojaa

Respuestas:

11

Las aplicaciones gráficas que hacen salida vectorial están disponibles. He usado las siguientes aplicaciones con bastante éxito:

  • Mathematica <- mi preferencia puede hacer imágenes como las anteriores
  • Matlab (recuerde exportar eps)
  • Python usando matplotlib
  • Arce
  • PSTricks
  • Ilustrador
  • Xara
  • Inkscape
  • Autocad

Aunque quizás necesite usar aplicaciones 3D o aplicaciones gráficas, sugiero:

  • yEd , varios diseños de gráficos y se pueden ejecutar en Internet sin necesidad de instalación.
  • Gephi , gráficos de fuerza dirigida
  • Maya, 3DsMax con render 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 en una herramienta de artistas gráficos como ilustrador para su posterior finalización. El beneficio real es que puedes jugar con los gráficos antes de involucrarte, 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 correcto).

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

joojaa
fuente
6

Su mejor opción es elegir un editor de vectores y aprender a usarlo. Los ejemplos anteriores no parecen complicados, y una comprensión básica de los vectores de dibujo haría bien el trabajo.

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

Hussein N
fuente
2
Inkscape tiene la ventaja adicional de admitir la exportación a PDF + Latex. Obtiene gráficos PDF con textos de Latex.
jnovacho
Permítanme aclarar esto: si trazo una forma de superficie 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 'sesgar' y rotar? las parcelas?
Dipolo
@Jack sí así como la capacidad para anchos de línea de cambio de cambiar el color de mover leyendas etc.
joojaa
¡Genial, lo intentaré!
Dipolo
2

Primero: .PY + Matplotlib -> .SVG

Entonces, .SVG -> Inkskape

Sin embargo, .SVG es lo suficientemente fácil como para aprender a ir .PY -> .SVG

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

XOR
fuente
Gracias por tu comentario. ¿Entonces trabajo en python y lo guardo como un archivo svg, luego lo abro con Inkscape?
Dipolo
1
Xor mientras estás en esto, podrías dar un ejemplo o debería yo. +1 en cualquier caso, Python también puede hablar directamente con Inkscape, pero tal vez esta es una pregunta diferente.
joojaa
1

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 estoy publicando 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, robado por completo, del sitio web matplotlib (ver ejemplos) y de Stack Overflow (matplotlib guardar el recorte de imagen de higo). 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. Es posible que tenga que desagrupar algunas 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)
XOR
fuente