Контур в MATLAB: Обзор графика
Содержание (щелкните для удобной навигации)
- Что такое контур в MATLAB?
- Построение контурной карты в MATLAB с использованием восьми различных команд
- Заключение
- Ссылки
Что такое контур в MATLAB?
Контурная карта в MATLAB — это графическое представление 3D-поверхности относительно постоянной оси Z для отображения в 2D-формате.
Когда мы пытаемся построить 3D-карту в MATLAB, у нас есть разные варианты построения. Одним из них является контурная карта, которая показывает 3D-график в 2D-формате с постоянной осью Z. Изогнутая линия того же цвета показывает одну и ту же точку возвышения. Например, если мы хотим построить 2D-диаграмму 3D-изображения, показанного на рис. 1 нарисуем изогнутые линии, показывающие высоту и крутизну на карте.
На рис. 2 показана контурная карта рис. 1. Мы видим, что каждый круговая линия находится в той же точке высоты, а крутизна показана насыщенная зона.
Построение контура в MATLAB с помощью восьми различных команд
Мы представим восемь основных команд для контурной карты. участок:
- КОНТУР (составляет плоскую контурную карту).
- КОНТУР3 (производит трехмерную контурную карту).
- КОНТУР (выдает контурную карту с заполненными линиями).
- EZCONTOUR
- EZCONTOURF
- EZMESHC
- SURFC
- EZSURF
Команда «КОНТУР»
Для создания плоских контурных карт мы используем команду «Контур».
На рис. 4 показан вывод кода MATLAB.
Обычно контурная карта содержит десять линий. Каждый цветная линия находится на одном уровне высоты. Если нам нужно больше строк, мы будем использовать команда:
Контур(x,y,z,25) вместо Контур(x,y,z). Это будет дайте нам 25-строчную контурную карту.
Если мы хотим пометить карту, мы используем команду «clabel». Помечен уровни высоты показаны на этом рисунке.
[в, ч] = контур (х, у, г)
Класс (c, h)
‘КОНТУР3’ Команда 92’) показывает и поверхность, и контурные линии на одном и том же наборе осей.
Заключение
Когда мы рисуем 3D-поверхность в MATLAB мы можем построить его контур в 2D-формате с одной постоянной осью. Контур любой функции можно построить в MATLAB, и мы можем увидеть разную высоту уровни представлены разными цветами линий и помечены с помощью «clabel» команда. Также мы можем рисовать поверхность и контур одновременно.
Каталожные номера
www.mathworks.com
Программное обеспечение MATLAB
pgfplots: Как имитировать заполненный контурный график MATLAB? — TeX
Здесь я представляю два решения.
Решение 1 (левая часть изображения)
Это попытка воспроизвести рисунок Matlab с возможностями PGFPlots. Чтобы «подтвердить», что я сделал это правильно, я сначала сохранил ваше изображение Matlab и обрезал части оси. Затем я добавил это как \addplot graphics
и вдобавок добавил реальный график, т. е. \addplot контур заполнен 9График 0125 с прозрачностью 50%. Это позволило проверить, правильно ли я нашел границы интервала.
Сказал, что я считаю ваше заявление выше неверным. Кажется, вы удалили цвет для всех значений> 1600. Это также имеет смысл, потому что максимальное значение в файле P3.dat
равно 1723 ...
Решение 2 (правая часть изображения)
Здесь я просто использовал обрезанное выше изображение Matlab и воспроизвел цветовую полосу. .
Сравнение
Как вы можете видеть, в решении 1 есть некоторые "артефакты", которые не делают результат таким гладким, как результат Matlab. То есть, потому что расчет/визуализация контуров только зависит от возможностей вашей программы просмотра PDF. Сказал, что может быть ваш результат отличается от моего. Я сделал скриншот из представления в Acrobat Reader XI.
Вот почему я предпочитаю решение 2.
Чтобы улучшить результат, вы должны изменить свой вид Matlab на только показывать контуры, что означает удаление оси и линий сетки. Тогда единственная разница может заключаться в цветах, используемых/отображаемых на контурном графике Matlab, и в цветовой полосе, рассчитанной с помощью PGFPlots. Конкретно я имею в виду, что можно использовать цвета RGB, а другой CMYK. Но поскольку у вас есть иллюстратор, как вы сказали, вы можете проверить это и адаптировать одну из обеих частей, то есть вывод Matlab или PGFPlots.
Вы также можете создать «чистую», то есть без какой-либо оси, версию цветовой полосы в Matlab, а также импортировать эту графику в цветовую полосу PGFPlots. Конечно, тогда цвета идентичны .
Для получения более подробной информации о том, как работают решения, ознакомьтесь с комментариями в коде.
% использованных PGFPlots v1.14 \RequirePackage{luatex85} \documentclass{автономный} \usepackage{pgfplots} \pgfplotsset{ % вам нужен как минимум этот уровень совместимости или выше, чтобы использовать следующие функции совместимость = 1,14, % определить «белую» цветовую палитру для белой части изображения цветовая карта = {нет данных} { цвет = (белый) % цвет = (белый) цвет = (красный) }, % загрузить эту палитру, которая позже используется цветовая карта/сине-красный, % определяют цветовую карту «parula», которая использовалась для создания экспортированного изображения. % от Matlab % (позаимствовано с http://tex.stackexchange.com/a/336647/95441) цветовая карта = {парула} { rgb255=(53,42,135) rgb255=(15,92,221) rgb255=(18 125 216) rgb255=(7 156 207) rgb255=(21 177 180) rgb255=(89 189 140) rgb255=(165 190 107) rgb255=(225,185,82) rgb255=(252,206,46) rgb255=(249,251,14) }, } \начать{документ} \begin{tikzpicture} \начать{ось}[ вид={0}{90}, цветная полоса, % немного изменить стиль цветовой полосы стиль цветовой полосы = { тиковое расстояние = 200, умакс=1600, }, % этот ключ-значение необходим из-за `\ addplot graphics' увеличитьпределы=ложь, ] % импортировать "экспортированную" графику \ добавить график [ хмин=0, хмакс=50, умин=0, умакс=150, ] {P3}; % теперь попробуйте воспроизвести стиль экспортированной графики \ addplot3 [ % для этого использования, например, функция «заполнение счетчика» ... контур заполнен={ % ... в сочетании с функцией «уровни цветовой карты» %, который позволяет настроить используемую цветовую карту уровни из палитры={ % эта часть палитры предназначена для "цветной" части цветовой карты = { % здесь мы используем приведенную выше инициализированную палитру bluered синий, % % («viridis» — это цветовая карта, аналогичная % % использовал сокарту `parula' в Matlab. % % Но поскольку желтый цвет трудно определить % % в этом контексте мы используем приведенную выше палитру) % виридис, % с этим мы заявляем, что это еще не все целевая позиция макс=, % и здесь мы указываем, где соответствующие уровни % должен *начать* целевая позиция = {200 400 600 800, 1000, 1200, 1400}, }, % здесь идет вторая часть палитры, которая % не должен иметь цвета, который невозможен или, по крайней мере, % Я понятия не имею, как это сделать. .. цветовой карты = { % ... поэтому вместо этого я использую "белую" цветовую карту нет данных, % здесь нижний конец не нужен, потому что это было %, указанный в первой части палитры целевая позиция мин=, % и вот соответствующий интервал *start* % для этой палитры % (как видите -- или нет ;) -- начинается белый цвет % в позиции/значениях > =1600) целевая позиция = {1600}, }, }, }, % вам нужно указать только «строки» или «столбцы», потому что % PGFPlots затем может вычислить другое значение вместе с % предоставленное количество точек данных сетка/ряды=31, % сделать график полупрозрачным, чтобы проверить, что `target pos' % палитры выбраны правильно непрозрачность=0,5, ] таблица {P3. dat}; \конец{ось} \end{tikzpicture} \begin{tikzpicture} \начать{ось}[ % показать цветную полосу цветная полоса, %, потому что нет реального сюжета, на котором PGFPlots может получить «мета» % данных из, их нужно указать вручную точка мета мин=200, точка мета макс=1800, %%% здесь мы снова определяем необходимую цветовую карту и ее стиль % мы хотим использовать постоянные интервалы в палитре доступ к цветовой карте = кусочно-константная, %, а также здесь мы должны снова указать лимиты ... цветовой карты/целевой позиции min*=200, цветовая карта/целевая позиция max*=1800, % ... и используйте эту функцию, которая упрощает предоставление % образцов в правильном положении % (пожалуйста, ознакомьтесь с руководством по PGFPlots для получения более подробной информации) цветовой карты/образца для = const, % это похоже на приведенный выше пример цветовая карта = {СМ} { цветовой карты = { % .