Как автоматически создать 3D-гитограмму в matlab?
Вопрос
У меня есть 3d-гистограмма в matlab.Возможно ли автоматически вращать его, т.е. получать 3D-эффекты?Я хочу показать это в виде видео в PowerPoint, где 3D-гистограмма поворачивается.
Спасибо
Решение
Несколько громоздким способом сделать это было бы повернуть диаграмму вручную, используя view
команда.Вы можете обновить виды по азимуту и высоте любого 3D-графика с помощью этой команды.
Для создания видеоролика об этом требуется захватить окно графика, используя последовательность команд, подобную этой (обратите внимание, вы получите серый фон, поэтому, возможно, захотите изменить цвет фона):
% create figure and get handle to it (store handle in hf)
hf = figure(1);
% [create 3d plot]
% Create file to hold the animation
aviobj = avifile('mymovie.avi', 'compression', 'Cinepak');
% loop with some criteria for rotation
while(...)
% update view using view command
view(az, el);
% get Matlab to flush the drawing buffer (effectively forces a plot update)
drawnow;
% capture frame and write to the avi file
aviobj = addframe(aviobj, hf);
end
% end loop
% Close movie (flushes write buffer and finishes the video)
aviobj = close(aviobj);
Вы можете использовать ту же тактику без avifile
материал для поворота графика с помощью скрипта в Matlab, хотя вы, возможно, захотите использовать pause
команда для замедления смены кадра.
Другие советы
Давайте убедимся, что мы говорим здесь об одном и том же.Двумерная гистограмма будет иметь элементы заданного диапазона X и Y, а количество будет отображаться по оси Z.Трехмерная гистограмма будет иметь интервалы в диапазонах X, Y и Z, а счетчик будет отображаться каким-то другим способом (цветом?). Чтобы трехмерная гистограмма имела смысл, вам понадобится срез. Я предполагаю, что вы имеете в виду двумерная гистограмма, похожая на кучу блоков, выходящих из-под земли.
Я думаю, вам будет лучше превратить эту двумерную гистограмму в изображение, где каждый пиксель представляет определенный интервал по X и Y, а цвет определяет количество в этом интервале.Я думаю, что это движение только запутает данные.Для этого используйте image, imagesc или imshow.Кроме того, я бы порекомендовал цветовую карту, основанную на интенсивности (>>colormap), например весеннюю или зимнюю.Это делает различия более очевидными.Включите цветовую панель (>>colorbar)