Как построить ветровой поток/аэродинамические диаграммы?

Мне нужна помощь в том, как создавать красивые векторные изображения таких тем:

поток ветра пример 1

поток ветра пример 2

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

Я был бы очень признателен, если бы кто-нибудь мог указать мне правильное направление относительно того, как я могу делать такие изображения, предпочтительно с использованием бесплатного программного обеспечения.

Вам нужна возможность ввода формул или просто рисование?
Для начала было бы достаточно рисования, думаю, я всегда мог бы вставить что-то в постобработке.
Когда вы закончите оценивать вопросы, важно принять вопрос. В противном случае он посылает неверный сигнал. Примите вопрос, который кажется наиболее близким к ответу на вашу идею. Не стесняйтесь принимать даже один из вопросов с меньшим количеством голосов. Поскольку у этого вопроса также есть хорошие побочные вопросы, вы можете задать более конкретные комбинации инструментов. Очень приятный вопрос, спасибо за это.
Сделанный! Надеюсь, скоро у меня появятся дополнительные вопросы, которые будут более конкретными. Должен ли я тогда открыть новый вопрос и ссылку на этот?
если вы думаете, что ссылка помогает. Не забывайте проводить исследования, лучше изученные вопросы приводят к лучшим ответам.

Ответы (4)

Доступны графические приложения, выполняющие векторный вывод. Я довольно успешно использовал следующие приложения:

  • Mathematica <- я предпочитаю, чтобы он мог делать изображения, подобные приведенным выше.
  • Matlab (не забудьте экспортировать eps)
  • Python с использованием matplotlib
  • Клен
  • PSTricks
  • Иллюстратор
  • Хара
  • Инкскейп
  • Автокад

Возможно, вам придется использовать 3D-приложения или графические приложения, я предлагаю:

  • yEd , различные макеты графиков и могут быть запущены из Интернета без необходимости установки.
  • Gephi , силовые ориентированные графы
  • Maya, 3DsMax с векторным рендерингом
  • Creo, NX, Catia, Solidworks...

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

Кроме того, вы можете самостоятельно рисовать в Illustrator, если хотите, некоторый код , который поможет вам в этом.

Ресурсы

Вот краткий список вещей, пока у меня не будет времени найти несколько подходящих примеров (ламинарный поток справа).

Некоторые примеры с похожими компонентами (вам может понадобиться добавить больше, но вот некоторые части головоломки):

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

Если вы будете пробовать один из них, я бы посоветовал не использовать Illustrator или Corel Draw. Хотя оба являются мощными и популярными инструментами выбора, они кажутся сложными для новичка. Inkscape — хороший выбор. Это бесплатно, и изучение этого не должно быть проблемой.

Inkscape имеет дополнительное преимущество поддержки экспорта в PDF + Latex. Вы получаете графику в формате PDF с текстами из латекса.
Итак, позвольте мне сказать прямо: если я рисую форму аэродинамического профиля в Python, используя Matplotlib и профиль скорости, такой как на втором изображении выше, могу ли я импортировать их в Inkscape, а затем выполнять их модификации, такие как «перекос» и вращение сюжеты?
@Jack да, а также возможность перекрашивать, изменять ширину линий, перемещать легенды и т. д.
Отлично, я попробую!

Первый: .PY + Matplotlib -> .SVG

Затем .SVG -> Inkskape

Тем не менее, .SVG достаточно легко научиться переходить из .PY -> .SVG.

Вы также можете сделать .PY + Matplotlib -> .PDF. Inkscape откроет и это.

Спасибо за ваш комментарий. Итак, я работаю на питоне и сохраняю его как файл svg, а затем открываю его с помощью Inkscape?
Xor, пока вы занимаетесь этим, вы можете привести пример или мне следует. +1 в любом случае, python также может напрямую общаться с inkscape, но, может быть, это другой вопрос?

Отказ от ответственности:

  1. Обычно я не программирую на Python, если мне не нужно исправлять чужой код.
  2. Я никогда не использовал Matplotlib - это моя первая попытка его использования и, поскольку это выглядело интересно, ЕДИНСТВЕННАЯ причина, по которой я публикую этот ответ.

Теперь более надежный ответ: (Не то чтобы мне нравилось делать домашнюю работу для кандидатов наук...)

Все здесь было украдено — полностью украдено — с веб-сайта matplotlib (см. Примеры) и из Stack Overflow (matplotlib сохраняет обрезку рисового изображения). Все, что я сделал, это скопировал/вставил его и проверил.

Полученный файл out.svg можно открыть непосредственно в Inkscape. Изображение представляет собой группу/группы изображений меньшего размера. Нажмите на любую часть изображения, затем используйте параметр Inkscape «Разгруппировать». Возможно, вам придется разгруппировать несколько раз, чтобы иметь возможность напрямую манипулировать частью изображения.

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)