¿Qué programas de software se utilizan para dibujar diagramas físicos y cuáles son sus méritos relativos?

Sin duda, la gente usa una variedad de programas para dibujar diagramas de física, pero no estoy familiarizado con muchos de ellos. Por lo general, dibujo cosas a mano en GIMP , que es poderoso en algunos aspectos, pero lleva mucho tiempo hacer cosas como dibujar círculos o flechas porque las hago con herramientas más primitivas. También es difícil ser preciso.

Sé que algunas personas usan LaTeX, pero no estoy seguro de cuán versátil o fácil es. Las únicas otras herramientas que conozco son Microsoft Paint y las herramientas integradas en Microsoft Office.

Entonces, ¿qué herramientas utilizan comúnmente los físicos? ¿Cuáles son sus puntos buenos y malos (características, facilidad de uso, portabilidad, etc.)?

Estoy buscando una herramienta con alta flexibilidad y mínima curva de aprendizaje/tiempo de desarrollo. Si bien me gustaría dibujar a mano y arrastrar y soltar formas prefabricadas, también quiero especificar las ubicaciones exactas de curvas y formas con ecuaciones cuando necesito una mayor precisión. Además, la funcionalidad de programación mínima sería una buena característica adicional (es decir, la capacidad de ejecutar un bucle que dibuja una serie de líneas con un parámetro variable).

Recomiende algunas piezas de software si son buenas para diferentes situaciones.

Pregunta relacionada sobre SO: stackoverflow.com/q/4005042

Respuestas (20)

He tenido buenas experiencias con Inkscape . Tiene una interfaz GUI, pero le permite ingresar coordenadas directamente si lo desea, y es programable. Hay un complemento que le permite ingresar a LaTeX directamente (para etiquetas y demás). La desventaja es que todavía está en desarrollo, por lo que a veces encuentra que una función que desea aún no está completamente implementada.

Como ejemplo, aquí hay un póster que hice la semana pasada, completamente dentro de Inkscape:Cartel hecho con Inkscape

Inkscape ahora también tiene el complemento " JessyInk " que le permite usarlo para hacer presentaciones ( al estilo de Powerpoint). La presentación se puede ver en un navegador web como SVG o exportar a PDF.

Si tiene una Mac y no le importa gastar algo de dinero ($100), he oído hablar bien de OmniGraffle .

He usado mucho Inkscape (aunque prefiero LaTeX/TikZ) y ha sido muy raro que necesite una función que no esté implementada.
Gracias por el consejo. Acabo de comenzar con el tutorial de Geogebra ( geogebra.org/cms ) y le daré un vistazo a Inkscape a continuación.
En general algo para dibujo vectorial; Estoy usando CorelDraw para esas cosas, pero no es gratis y solo para Windows (de hecho, es la única razón por la que tengo Windows instalado).
+1 para Inkscape, especialmente cuando se usa con la función de renderizado LaTeX. Es bueno tener diagramas en formato vectorial (SVG), de modo que se puedan volver a escalar fácilmente, cambiar las capas, etc., según sea necesario.
Además, puede exportar gráficos de gnumeric en formato svg e importarlos en inkscape: screencasters.heathenx.org/episode-078
Agradable. No conocía el complemento LaTeX hasta ahora.

Estoy aprendiendo TikZ (un paquete de dibujo para LaTeX) mientras hablamos. Es bueno para dibujos lineales bidimensionales, la sintaxis para especificar formas y curvas es extremadamente versátil, pero la curva de aprendizaje es incluso más pronunciada que LaTeX.

Hay una magnífica galería de ejemplos de TikZ .

Aquí hay otra colección de buenos ejemplos de TikZ en SE.tex.

Vale la pena señalar que TikZ está mucho mejor documentado que LaTeX en su conjunto, lo que, en mi opinión, compensa con creces la curva de aprendizaje.
En realidad, LaTeX está mejor documentado: solo que tienes que comprar la documentación. No estoy de acuerdo con que la documentación de TikZ compense la curva de aprendizaje. Es extremadamente prolijo y la parte del tutorial no estructura la información para que primero aprenda un marco básico; no puede comenzar a hacer sus propios diagramas hasta que haya recorrido una gran parte.
¿Está permitido su uso en publicaciones periódicas?
@Alex: eso realmente depende de la revista. Algunas revistas ni siquiera permiten LaTeX.
Me refiero a revistas AIP o APS. Es posible que algunos macropaquetes no se gestionen allí o provoquen una reducción de la calidad de la imagen.
@Alex: Nuevamente, no sé si tienen TikZ disponible. Tendrás que preguntarles. Sin embargo, TikZ produce gráficos vectoriales: siempre que permanezcan en un formato de gráficos vectoriales, no existe la "reducción de la calidad de la imagen".
Por cierto, AIP tiene esto que decir sobre LaTeX: "Aunque apreciamos los beneficios para los autores de preparar manuscritos en TeX, especialmente para manuscritos con un uso intensivo de matemáticas, no es una herramienta de composición rentable (para el volumen de páginas que AIP actualmente utiliza). produce) ni es un formato que pueda usarse de manera efectiva para la publicación en línea". ( aip.org/pubservs/compuscript.html#prepare )
Tuve un problema con la calidad reducida en la publicación incluso con el procedimiento de "imagen" de LaTeX. La única forma segura que encontré es un programa con posibilidad de salida * .eps e incluso en tal caso puede haber un problema debido a las fuentes en algunas revistas o conferencias.
@ptomato: Por otro lado, Physical Review y las revistas relacionadas prefieren las presentaciones en LaTeX (usando revtex, por supuesto). La parte sobre el uso de revtex es importante, porque les permite procesar con confianza los manuscritos para la web e imprimirlos automáticamente. Aceptar LaTeX arbitrario es difícil , pero aceptar un subconjunto grande pero bien definido es manejable.
@ptomato Parece que AIP puede haber cambiado para permitir RevTeX ahora (ver publishing.aip.org/authors/preparing-your-manuscript )

Interpretaré su término diagrama como "cualquier imagen elegante que capture algo de física".

Para esto, difícilmente puedo recomendar algo más que MetaPost . Está a la par con TeX en que es un poco difícil de aprender, pero una vez que domines los conceptos básicos, no creerás que podrías haber usado algo más (en particular, GIMP e Inkscape; una buena analogía aquí sería TeX vs. MS Word ).

Propiedades básicas

  1. es un lenguaje de programación (simple)
  2. es vectorial (esto probablemente debería ser evidente, pero aún así)
  3. sus primitivas son cosas como puntos, líneas, caminos, splines
  4. contiene excelentes instalaciones de manipulación de imágenes; puede decir cosas como "tome esta imagen, amplíela dos veces y gírela 60 grados".
  5. puede insertar etiquetas TeX
  6. puede resolver ecuaciones; Este es un verdadero asesino que nadie más ofrece. Puedes dibujar dos curvas. X ( t ) y Y ( t ) (definidos más cómodamente como splines) y dígale a MP que calcule su intersección, dibuje un punto allí y etiquételo con algún texto

Historia exitosa

Usé MP para crear algunos polígonos en una red hexagonal en el contexto de las expansiones de clústeres. Había una gran cantidad de esos polígonos para dibujar, así que rápidamente abandoné toda esperanza de intentar dibujarlos a mano en Inkscape o algo similar. Cierto, probablemente sería más rápido al final, pero odio el trabajo manual; Prefiero pasar mucho más tiempo aprendiendo algún lenguaje de programación y luego codificar todo el trabajo en unos minutos. Entonces armé un programa MP simple que ha convertido mis datos de entrada (vértices y bordes de los polígonos como solo números) en bellas imágenes. Para el trabajo de una noche y mi primera vez con MP estaba más que satisfecho.

golosinas

texto alternativo

El crédito por esta increíble imagen es para Johan Kåhrström (ve también más cosas debajo de las ilustraciones allí).

Excelente resumen e imagen de ejemplo! Gracias Marek.
@Mark: Solo ahora me di cuenta de que se trataba de un wiki comunitario y otras respuestas tienen solo unas pocas líneas. Entonces me pregunto si esta respuesta larga es adecuada aquí (no quiero robar demasiado espacio solo para mí). Aún así, viendo que te gusta, probablemente pueda quedarse :-)
¡Hermoso ejemplo!
Creo que TikZ en realidad puede hacer todas las cosas que mencionaste en tu lista.
@David: Debería echarle un vistazo entonces; Gracias por el aviso. Aunque ahora me doy cuenta de que ya hay una respuesta al respecto aquí (desafortunadamente no muy informativa) que me había perdido.
Wow, la imagen es impresionante.

En primer lugar , no utilice un software de gráficos de trama como Gimp para hacer dibujos. Esto tiene serias desventajas cuando desea hacer documentos legibles en pantalla (la imagen se pixeliza). Para ello utilice siempre gráficos vectoriales . Wikipedia tiene una buena lista de software de gráficos vectoriales . Entre ellos, recomendaría los siguientes:

  • Inkscape (multiplataforma): aunque la curva de aprendizaje es un poco empinada, vale la pena. Tenga en cuenta que Inkscape no fue diseñado para hacer diagramas científicos. Aún encontrará un complemento de LaTeX, exporte a LaTeX/PSTricks, etc.

  • Dia (Multiplataforma): Muy simple y fácil, pero no muy potente. No se puede procesar LaTeX .

  • Ipe (multiplataforma): Ipe es algo intermedio entre Inkscape y Dia. También Ipe fue diseñado para dibujo científico. Puede procesar el código fuente de LaTeX e importar figuras en PDF.

  • WinFIG (Cross-platform): Aunque comercial , es bastante popular en la comunidad científica.

EDITAR: Wikipedia tiene una página agradable que analiza varios programas que se pueden usar para crear figuras. Ver Wikipedia: Cómo crear gráficos para artículos de Wikipedia

Probaría matplotlib, pero primero verifique aquí y decida si estas imágenes satisfacen sus necesidades. También haga clic en alguna imagen e inspeccione el código fuente.

¡Esas son algunas fotos bonitas! Sin embargo, supongo que tendría que aprender Python.
@Mark: nunca es demasiado temprano para aprender Python;)
Es justo mencionar que matplotlib es extremadamente similar a MATLAB: interfaz de usuario similar, capacidades similares, estilos predeterminados similares, etc. Una ventaja de Matplotlib sobre matlab es que puede usar python, que es un mejor lenguaje de programación que matlab. Otra es que matplotlib es gratuito, mientras que matlab es prohibitivamente costoso a menos que lo obtenga a través del trabajo o la escuela o lo piratee. Por otro lado, MATLAB tiene mejores archivos de ayuda, una instalación más sencilla y una base de usuarios científicos más grande [pero espero que esas cosas cambien eventualmente].
Usé matplotlib para muchos gráficos en mi tesis. El único inconveniente es la falta de salida de texto. Esto significaba que tenía que importar mis archivos .svg en Inkscape para agregar texto y luego exportarlos como tex.

Publicación relacionada en SO .

Mi favorito personal es Asymtpote, que es como MetaPost con esteroides. Una galería está aquí .

Leí sobre Asymptote cuando estaba decidiendo si aprender MP o algo más. Algo me desanimó; ya sea sintaxis similar a C ++, solo compatibilidad con LaTeX, o tal vez algo más (no recuerdo si algo de esto tiene que ver con Asymptote o algún otro programa). ¿Podrías describir un poco las diferencias con MP? Estaría dispuesto a aprender Asymptote si resulta ser una mejor alternativa.
@Marek Wow, este es un hilo antiguo, pero parece que su pregunta nunca fue respondida. Personalmente, prefiero Asymptote, ya que brinda prácticamente todo el poder de MP pero con una sintaxis mucho más simplificada. Me gusta y ni siquiera me gusta la programación orientada a objetos. Cualquier cosa geométrica que comúnmente dibujes probablemente ya exista como funciones muy naturales. Además, se basa en LaTeX para hacer que las etiquetas se escriban bien. Y si lo desea, puede integrar los comandos de Asy sin problemas en un documento de Tex usando el paquete correcto, aunque prefiero mantenerlos separados. Asy es definitivamente subestimado.

A veces, los gráficos de trama también son necesarios. Usé a menudo POV-Ray para hacer algunas ilustraciones.agujero negro

Se puede preparar con cualquier tamaño utilizando el mismo guión con la descripción de la imagen, que evita problemas de escala. Pero no es un editor gráfico y es rápido solo para la preparación de imágenes simples.

Solo para completar, dejaré esto aquí:

¡Siempre es posible componer sus ilustraciones en posdata en bruto ! Postscript es en sí mismo un lenguaje de programación similar a Forth. Es especialmente útil para las ilustraciones que se prestan a generarse de forma procesal. Si el postscript en sí es de un nivel demasiado bajo, a menudo se puede escribir un script en algún otro idioma que genere un programa postscript.

Una excelente introducción a la producción de dibujos en posdata sin procesar es este libro gratuito:

Ilustración de portada: Ilustraciones matemáticas de Bill Casselman

Bonito libro parece. ¡Tengo que echarle un vistazo!

Para dibujar diagramas de Feynman con SVG, he desarrollado jQuery.Feyn para que sea más fácil (ver la captura de pantalla a continuación).ingrese la descripción de la imagen aquí

Hace poco me presentaron GeoGebra y, aunque todavía no he tenido la oportunidad de usarlo para ningún trabajo, me encanta la interfaz. Para diagramas geométricos se ve espectacular.

También he usado mucho XFig y gnuplot. Particularmente si usas L A T mi X , estas herramientas cumplen su propósito muy, muy bien.

He estado usando Geogebra desde que señalaste esto. ¡Es genial!
Además, GG también puede generar códigos Tikz/asymptote, lo cual es increíble :)

Para dibujos primitivos, soy un gran admirador de XFig. La interfaz de usuario es un poco torpe, pero se puede guardar en docenas de formatos de gráficos y crea figuras que son francamente triviales de incluir en un documento LaTeX. Lo más importante para mí es que el formato de archivo está basado en texto, por lo que es completamente posible escribir dibujos más complicados.

Yo también uso Mathematica para figuras y descubrí que no fue un gran salto de ahí a usarlo para dibujos. Puede dibujar primitivas 2D o 3D con bastante facilidad:

Rectangle[{xmin, ymin}, {xmax, ymax}]

y, como python/matplotlib, poder parametrizar todo le permite volver a dibujar una imagen para múltiples escenarios (o Animarla o Manipularla ).

Para mí, la característica más útil es que puedes definir las cosas en términos matemáticos. El ejemplo de MetaPost mencionado por Marek, en el que se pueden definir dos curvas y la intersección calculada por el paquete de dibujo, es manejado inherentemente por Mathematica.

Pensé mucho en esta pregunta desde que me gradué y comencé a enseñar. Creo que Adobe Illustrator es el mejor software de imágenes vectoriales. No requiere ningún código para dibujar imágenes; solo tienes que aprender a usar algunas herramientas "importantes". No soy de ninguna manera un diseñador gráfico o un profesional en Illustrator y dibujé esto:





Además,

  1. siempre puedes encontrar tutoriales sobre cómo dibujar cualquier cosa con Illustrator
  2. Puede exportar imágenes de Matlab o Autocad a Illustrator (.ai o .eps)

Quizás también debería decir unas palabras sobre el principal inconveniente de Adobe Illustrator: ¡su precio! Es para profesionales, no para hacer esquemas simples.
Gracias. ¿Tienes alguna opinión más allá de lo que se dice en ese hilo?
No. ¡Nada más allá de lo dicho! Yo uso mspaint :)

Para empezar, para el dibujo científico, generalmente los gráficos vectoriales son más adecuados: escalables, convenientes para modificar y producir archivos menos voluminosos.

Para gráficos simples de propósito general, uso OpenOffice.org Draw (lo prefiero a Incscape).

Para diagramas abstractos existe yEd-Graph Editor .

Ambos son gratuitos, para Win/Linux/MacOSX, fáciles de aprender y se pueden exportar a gráficos vectoriales y pdf.

Yo uso TKPAINT que todavía funciona muy bien.

http://www.netanya.ac.il/~samy/tkpaint.html

Primero, uno tiene que descargar ActiveTcl para Windows o sus contrapartes Tcl para Linux o lo que sea que use. Puede dibujar discos llenos o vacíos, elipses, cuadrados, rectángulos, splines, rotarlos, copiarlos rápidamente, moverlos, textos con muchas fuentes, colores, cuadrícula, y puede exportarse como EPS -postscript encapsulado también- que es una forma estándar de incrustar diagramas similares en documentos TeX en arXiv y más allá.

Lo he usado en muchos artículos cuando los estaba escribiendo.

Saludos LM

Para circuitos eléctricos, CircuitLab es un buen editor y simulador en línea. Hay algunas restricciones sobre lo que puede hacer sin una cuenta o con una cuenta gratuita, no recuerdo los detalles, pero puede usar la pantalla de impresión para obtener buenas imágenes. Me gusta porque está realmente al nivel de simplicidad que necesito: si estoy explicando una pregunta básica de circuitos eléctricos, no quiero pasar más de dos minutos dibujando, digamos, cinco resistencias en alguna configuración en paralelo/serie. CircuitLab hace el trabajo.

Para ver un recorrido, vea su video de YouTube Primeros pasos con CircuitLab .


Editar: si desea incluir una salida png en una publicación en este sitio, puede ir a Ingeniería eléctrica , que tiene una implementación integrada en el editor de publicaciones y simplemente recuperar el enlace de la imagen. ¡Gracias a Chris White por el consejo!

Hay un complemento para Microsoft Word llamado Science Teacher's Helper. http://www.helpscience.com

SmartDraw también es un excelente programa para crear diagramas. http://www.smartdraw.com

También puede usar PLotly , una plataforma de creación de gráficos colaborativa basada en la web con API en Python, R, MATLAB, Julia y Perl. Puedes encontrar el código para hacer estos ejemplos en su documentación.

aquí.

Sugerido originalmente por Matthew Sundquist

Mire el software SCaVis . Tiene muchos ejemplos que ilustran cómo dibujar varios gráficos. Aquí está el enlace a los ejemplos.