Какие программы используются для построения физических диаграмм и каковы их относительные достоинства?

Несомненно, люди используют самые разные программы для рисования диаграмм по физике, но я не знаком со многими из них. Я обычно рисую вручную в GIMP , который в некоторых отношениях мощен, но такие вещи, как рисование кругов или стрелок, отнимают много времени, потому что я делаю их с помощью более примитивных инструментов. Также трудно быть точным.

Я знаю, что некоторые люди используют LaTeX, но я не совсем уверен, насколько он универсален или прост. Единственные другие инструменты, которые я знаю, — это Microsoft Paint и инструменты, встроенные в Microsoft Office.

Итак, какие инструменты обычно используются физиками? Каковы их хорошие и плохие стороны (возможности, простота использования, портативность и т. д.)?

Я ищу инструмент с высокой гибкостью и минимальным временем обучения/разработки. Хотя я хотел бы рисовать и перетаскивать готовые фигуры вручную, я также хочу указать точное расположение кривых и фигур с помощью уравнений, когда мне нужна более высокая точность. Более того, минимальная программная функциональность была бы неплохой дополнительной функцией (т.е. возможность запускать цикл, рисующий серию линий с переменным параметром).

Пожалуйста, порекомендуйте несколько программ, если они подходят для разных ситуаций.

Связанный вопрос по SO: stackoverflow.com/q/4005042
Бесплатное программное обеспечение для физиков pen.phys.virginia.edu/links/academic-software.html

Ответы (20)

У меня был хороший опыт работы с Inkscape . Он имеет графический интерфейс, но позволяет вам вводить координаты напрямую, если хотите, и его можно использовать в сценариях. Существует подключаемый модуль, который позволяет вам напрямую входить в LaTeX (для этикеток и тому подобного). Недостатком является то, что он все еще находится в разработке, поэтому иногда вы обнаруживаете, что функция, которую вы хотите, еще не полностью реализована.

В качестве примера, вот постер, который я сделал на прошлой неделе полностью в Inkscape:Плакат, сделанный в Inkscape

Inkscape теперь также имеет подключаемый модуль « JessyInk », который позволяет вам использовать его для создания презентаций ( а-ля Powerpoint). Презентация может быть просмотрена в веб-браузере в формате SVG или экспортирована в PDF.

Если у вас есть Mac и вы не против потратить немного денег (100 долларов), я слышал хорошие отзывы об OmniGraffle .

Я много использовал Inkscape (хотя предпочитаю LaTeX/TikZ), и очень редко мне нужна была функция, которая не реализована.
Спасибо за чаевые. Я только что начал изучать учебник по Geogebra ( geogebra.org/cms ), и в следующий раз познакомлюсь с Inkscape.
В общем что-то для векторной графики; Я использую CorelDraw для таких вещей, но он не бесплатный и только для Windows (действительно, это единственная причина, по которой у меня установлена ​​Windows).
+1 для Inkscape, особенно при использовании с функцией рендеринга LaTeX. Хорошо иметь диаграммы в векторном (SVG) виде, чтобы их можно было легко масштабировать, менять слои и так далее по мере необходимости.
Также вы можете экспортировать графики из gnumeric в формате svg и импортировать их в inkscape: screencasters.heathenx.org/episode-078
Хороший. До сих пор не знал о плагине LaTeX.

Пока мы разговариваем, я изучаю TikZ (пакет для рисования для LaTeX). Он хорош для двухмерных линейных рисунков, синтаксис для задания форм и кривых чрезвычайно универсален, но кривая обучения круче, чем даже в LaTeX.

Существует превосходная галерея примеров TikZ .

Вот еще одна коллекция аккуратных примеров TikZ на SE.tex.

Стоит отметить, что TikZ гораздо лучше документирован, чем LaTeX в целом, что, по IMO, более чем компенсирует кривую обучения.
На самом деле, LaTeX лучше документирован: просто вам нужно купить документацию. Я не согласен с тем, что документация TikZ компенсирует кривую обучения. Это очень многословно, и в учебной части информация не структурирована таким образом, чтобы вы сначала изучили базовую структуру — вы не можете начать создавать свои собственные диаграммы, пока не просмотрите большую ее часть.
Разрешено ли его использование в журнальных публикациях?
@Alex: это действительно зависит от журнала. Некоторые журналы даже не разрешают LaTeX.
Я имею в виду журналы AIP или APS. Некоторые макропакеты могут не управляться там или вызывать снижение качества изображения.
@Alex: Опять же, я не знаю, есть ли у них TikZ. Вам придется спросить их. Однако TikZ производит векторную графику — пока они остаются в формате векторной графики, не существует такого понятия, как «снижение качества изображения».
Между прочим, AIP говорит о LaTeX следующее: «Хотя мы ценим для авторов преимущества подготовки рукописей в TeX, особенно для рукописей с интенсивным использованием математики, это не является ни экономически эффективным инструментом составления (для объема страниц AIP в настоящее время производит) и не является форматом, который можно эффективно использовать для онлайн-публикаций». ( aip.org/pubservs/compuscript.html#prepare )
У меня была проблема со снижением качества в публикации даже с процедурой "изображения" LaTeX. Единственный безопасный способ, который я нашел, это программа с возможностью вывода *.eps, и даже в этом случае могут быть проблемы из-за шрифтов в некоторых журналах или конференциях.
@ptomato: С другой стороны, Physical Review и связанные с ним журналы предпочитают материалы в LaTeX (конечно, с использованием revtex). Часть об использовании revtex важна, потому что она позволяет им уверенно обрабатывать рукописи для Интернета и автоматически печатать. Принять произвольный LaTeX сложно , но принять большое, но четко определенное подмножество можно.
@ptomato Похоже, что AIP, возможно, изменился, чтобы теперь разрешить RevTeX (см. publishing.aip.org/authors/preparing-your-manuscript )

Я буду интерпретировать вашу диаграмму терминов как «любое причудливое изображение, которое отражает некоторую физику».

Для этого я вряд ли могу порекомендовать что-то еще, кроме MetaPost . Он наравне с TeX в том, что его немного сложно освоить, но как только вы овладеете основами, вы не поверите, что когда-либо могли использовать что-либо еще (в частности, GIMP и Inkscape; хорошей аналогией здесь будет TeX против MS Word). ).

Основные свойства

  1. это (простой) язык программирования
  2. это векторное (это, вероятно, должно быть само собой разумеющимся, но все же)
  3. его примитивы - это такие вещи, как точки, линии, пути, сплайны
  4. он содержит отличные средства обработки изображений; вы можете сказать что-то вроде «возьми это изображение, увеличь его в два раза и поверни на 60 градусов».
  5. вы можете вставлять метки TeX
  6. он может решать уравнения; Это настоящий убийца, которого больше никто не предлагает. Вы можете нарисовать две кривые Икс ( т ) а также Д ( т ) (наиболее удобно определять как сплайны) и сказать MP вычислить их пересечение, нарисовать там точку и пометить ее каким-либо текстом.

История успеха

Я использовал MP для создания нескольких полигонов на шестиугольной решетке в контексте расширения кластера. Нужно было нарисовать огромное количество этих полигонов, поэтому я быстро оставил всякую надежду попытаться нарисовать их вручную в Inkscape или чем-то подобном. Правда, наверное, в итоге было бы быстрее, но я ненавижу ручную работу; Я лучше потрачу гораздо больше времени на изучение какого-нибудь языка программирования, а затем просто запишу всю работу за несколько минут. Поэтому я собрал простую MP-программу, которая преобразовала мои входные данные (вершины и ребра многоугольников как просто числа) в красивые изображения. За одну ночь работы и мой первый раз с MP я был более чем доволен.

вкусности

альтернативный текст

Авторство этой удивительной картины принадлежит Йохану Корстрёму (см. также другие материалы под иллюстрациями ).

Отличное резюме и пример изображения! Спасибо, Марек.
@Mark: я только сейчас заметил, что это вики сообщества, а другие ответы состоят всего из нескольких строк. Поэтому мне интересно, подходит ли здесь этот длинный ответ (я не хочу красть слишком много места только для себя). Тем не менее, видя, что вам это нравится, он, вероятно, может остаться :-)
Красивый пример!
Я думаю, что TikZ действительно может делать все, что вы упомянули в своем списке.
@David: тогда я должен взглянуть на это; спасибо за голову. Хотя теперь я замечаю, что здесь уже есть ответ об этом (к сожалению, не очень информативный), который я пропустил.
Вау, картинка классная.

Прежде всего , не используйте программы для растровой графики , такие как Gimp, для рисования изображений. Это имеет серьезные недостатки, когда вы хотите сделать документы, читаемые с экрана (изображение становится пиксельным). Для этого всегда используйте векторную графику . В Википедии есть хороший список программ для работы с векторной графикой . Среди них я бы рекомендовал следующие:

  • Inkscape (кросс-платформенный): хотя кривая обучения немного крутая, оно того стоит. Обратите внимание, что Inkscape не предназначен для создания научных диаграмм. Тем не менее, вы найдете плагин LaTeX, экспорт в LaTeX/PSTricks и т. д.

  • Dia (кросс-платформенный): Очень простой и легкий, но не очень мощный. Не могу обработать LaTeX .

  • Ipe (кросс-платформенный): Ipe — нечто среднее между Inkscape и Dia. Также Ипе был предназначен для научного рисования. Может обрабатывать исходный код LaTeX и импортировать PDF-файлы.

  • WinFIG (кросс-платформенный): хотя и коммерческий , он довольно популярен в научном сообществе.

РЕДАКТИРОВАТЬ: В Википедии есть хорошая страница, на которой обсуждаются различные программы, которые можно использовать для создания фигур. См. Википедия: Как создавать графики для статей Википедии.

Я бы попробовал matplotlib, но сначала проверьте здесь и решите, удовлетворяют ли эти картинки ваши потребности. Также нажмите на картинку и проверьте исходный код.

Вот такие красивые картинки! Я полагаю, что мне все же придется выучить Python.
@Mark: никогда не рано изучать python;)
Справедливо отметить, что matplotlib очень похож на MATLAB: аналогичный пользовательский интерфейс, аналогичные возможности, аналогичные стили по умолчанию и т. д. Одним из преимуществ Matplotlib по сравнению с Matlab является то, что вы можете использовать python, который является лучшим языком программирования, чем Matlab. Другое дело, что matplotlib бесплатен, в то время как matlab непомерно дорог, если только вы не получаете его на работе, в школе или в пиратской версии. С другой стороны, MATLAB имеет лучшие файлы справки, более простую установку и большую базу научных пользователей [но я надеюсь, что со временем эти вещи изменятся].
Я использовал matplotlib для многих графиков в своей диссертации. Единственным недостатком является отсутствие вывода текса. Это означало, что мне пришлось импортировать файлы .svg в Inkscape, чтобы добавить текст, а затем экспортировать как tex.

Связанный пост в SO .

Мой личный фаворит — Asymtpote , который похож на MetaPost на стероидах. Галерея здесь .

Я читал об Asymptote, когда решал, изучать ли MP или что-то еще. Что-то меня оттолкнуло; был ли это синтаксис, подобный C++, только поддержка LaTeX или, возможно, что-то еще (я уже не помню, связано ли это с Asymptote или какой-либо другой программой). Не могли бы вы немного описать различия с MP? Я был бы готов изучить Asymptote, если бы он оказался лучшей альтернативой.
@Marek Вау, это старая тема, но, похоже, на твой вопрос так и не ответили. Я лично предпочитаю Asymptote, так как он дает почти все возможности MP, но с гораздо более упорядоченным синтаксисом. Мне это нравится и даже не нравится объектно-ориентированное программирование. Любые геометрические объекты, которые вы обычно рисуете, вероятно, уже существуют как очень естественные функции. Кроме того, он использует LaTeX, чтобы сделать этикетки хорошо набранными. И если вы того пожелаете, вы можете плавно интегрировать команды Asy в документ Tex, используя правильный пакет, хотя я предпочитаю держать их отдельно. Асы определенно недооценивают.

Иногда необходима и растровая графика. Я часто использовал POV-Ray для создания иллюстраций.черная дыра

Его можно сделать любого размера, используя тот же скрипт с описанием изображения, что позволяет избежать проблем с масштабированием. Но это не графический редактор и быстрый только для подготовки простых картинок.

Просто для полноты оставлю это здесь:

Всегда можно составить свои иллюстрации в необработанном постскриптуме ! Postscript сам по себе является Forth-подобным языком программирования. Это особенно полезно для иллюстраций, которые поддаются процедурной генерации. Если сам постскриптум слишком низкоуровневый, часто можно написать скрипт на каком-то другом языке, который выводит программу постскриптума.

Одна из превосходных вводных статей по созданию рисунков в необработанном постскриптуме — это бесплатная книга:

Иллюстрация на обложке: Математические иллюстрации Билла Кассельмана.

Хорошая книга вроде. Я должен это проверить!

Для рисования диаграмм Фейнмана с помощью SVG я разработал jQuery.Feyn , чтобы упростить задачу (см. скриншот ниже).введите описание изображения здесь

Я недавно познакомился с GeoGebra , и хотя у меня еще не было возможности использовать его для какой-либо работы, мне нравится интерфейс. Для геометрических диаграмм это выглядит эффектно.

Я также широко использовал XFig и gnuplot. Особенно, если вы используете л А Т Е Икс , эти инструменты очень хорошо служат своей цели.

Я использую Geogebra с тех пор, как вы указали на это. Это великолепно!
Кроме того, GG также может генерировать коды Tikz/асимптот, что здорово :)

Для примитивных рисунков я большой поклонник XFig. Пользовательский интерфейс немного неуклюж, но он может сохранять в десятки графических форматов и создавать рисунки, которые совершенно тривиально включить в документ LaTeX. Самое главное для меня то, что формат файла основан на тексте, поэтому вполне возможно создавать скрипты для более сложных рисунков.

Я тоже использую Mathematica для рисунков и обнаружил, что это не большой скачок от того, чтобы использовать его для рисунков. Вы можете довольно легко рисовать 2D или 3D примитивы:

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

и, подобно python/matplotlib, возможность параметризации всего позволяет вам перерисовывать изображение для нескольких сценариев (или анимировать или манипулировать им).

Для меня самой полезной функцией является то, что вы можете определять вещи с точки зрения математики. Пример MetaPost, упомянутый Мареком, в котором могут быть определены две кривые, а пересечение вычислено пакетом рисования, по своей сути обрабатывается Mathematica.

Я много думал над этим вопросом с тех пор, как закончил университет и начал преподавать. Я считаю Adobe Illustrator лучшей программой для работы с векторными изображениями. Для рисования изображений не требуется никакого кода; вам нужно только научиться использовать некоторые «важные» инструменты. Я никоим образом не графический дизайнер или профессионал в Illustrator, и я нарисовал это:





Более того,

  1. вы всегда можете найти учебники по рисованию чего угодно в Illustrator
  2. Вы можете экспортировать изображения из Matlab или Autocad в Illustrator (.ai или .eps)

Пожалуй, стоит сказать пару слов и о главном недостатке Adobe Illustrator: это цена! Это для профессионалов, а не для составления простых схем.
Спасибо. Есть ли у вас какие-либо мнения помимо того, что сказано в этой теме?
Нет. Ничего сверх того, что сказано! Я использую mspaint :)

Начнем с того, что для научного рисования обычно больше подходит векторная графика — масштабируемая, удобная для модификации и создания менее громоздких файлов.

Для простой графики общего назначения я использую OpenOffice.org Draw (я предпочитаю его Incscape).

Для абстрактных диаграмм есть yEd-Graph Editor .

Оба бесплатны для Win/Linux/MacOSX, просты в освоении и могут экспортироваться в векторную графику и pdf.

Я использую TKPAINT, который до сих пор работает очень хорошо.

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

Во-первых, нужно загрузить ActiveTcl для Windows или его аналоги Tcl для Linux или что-то еще, что вы используете. Он может рисовать заполненные или пустые диски, эллипсы, квадраты, прямоугольники, сплайны, вращать их, быстро копировать, перемещать, тексты с множеством шрифтов, цветов, сетки, а также может экспортироваться в формате EPS - также инкапсулированный постскриптум - который стандартный способ встраивания подобных диаграмм в документы TeX на arXiv и за его пределами.

Я использовал его во многих статьях, когда писал их.

Привет ЛМ

Для электрических цепей CircuitLab — хороший онлайн-редактор и симулятор. Есть некоторые ограничения на то, что вы можете делать без учетной записи или с бесплатной учетной записью — я не могу вспомнить подробности — но вы можете использовать экран печати, чтобы получить из него красивые картинки. Мне это нравится, потому что это действительно тот уровень простоты, который мне нужен: если я объясняю базовый вопрос об электрических цепях, я не хочу тратить более двух минут на рисование, скажем, пяти резисторов в какой-то параллельной/последовательной конфигурации. CircuitLab выполняет свою работу.

Для ознакомления см. их видео на YouTube «Начало работы с CircuitLab» .


Редактировать: Если вы хотите, чтобы вывод png был включен в сообщение на этом сайте, вы можете перейти к Electrical Engineering , у которого есть встроенная реализация в редакторе сообщений , и просто вернуть ссылку на изображение. Спасибо Крису Уайту за совет!

Существует надстройка для Microsoft Word под названием «Помощник учителя естественных наук». http://www.helpscience.com

SmartDraw также является отличной программой для создания диаграмм. http://www.smartdraw.com

Вы также можете использовать PLotly , совместную графическую веб-платформу с API-интерфейсами на Python, R, MATLAB, Julia и Perl. Вы можете найти код для создания этих примеров в их документации.

здесь.

Первоначально предложено Мэтью Сандквистом

Посмотрите на программное обеспечение SCaVis . В нем много примеров, иллюстрирующих, как рисовать различные графики. Вот ссылка на примеры