How to plot 3D grid (cube) in Matlab
Hi I would like to plot transparent cube-shaped grid with lines in it. Something like this:
However, I managed only to draw a 2D grid:
I use Matlab R2009b. If it is impossible to plot this in matlab could you recommend me a software I could use.
6 Answers 6
Consider this vectorized solution. It has the advantage that it creates a single graphic object:
If you don’t mind a few for loops, something like this will work:
You will just need to make the grid transparent by probably changing line properties, I don’t think you can change alpha values to accomplish this. Hope that is helpful.
A more vectorized version of Stephen’s answer might be the following:
Unfortunately, MATLAB does not currently support transparent lines (to my knowledge). If you really need them to be transparent I’d suggest using ‘patch’.
I understand this is a late reply but it is still valid in case anyone else is looking at doing the same thing.
Assuming you are plotting cubes (/their edges), an alternative to the answers already provided is to use the ‘plotcube’ code from Oliver: plotcube
The advantage of this solution is that you can:
All of these can be constants, or variables. (e.g. fixed edge colour, or a colour that changes with Z-value etc.)
To add in functionality of 2. and 3. (above) change the ‘cellfun(@patch. ‘ section in Olivers code, adding in the four extra lines of code as follows: (replace the whole cellfun section with this; including the new ‘EdgeAlpha’ and ‘EdgeColor’ lines):
For more info on ‘patch’ please see patch documentation.
I hope that helps someone.
Here is the ‘plotcube’ code in case the link to the original code by Oliver breaks someday:
Как построить 3D сетку (куб) в Matlab
Привет я хотел бы построить прозрачную кубовидную сетку с линиями в нем. Что-то вроде этого:
Однако мне удалось нарисовать только 2D-сетку:
Если вы не возражаете против нескольких циклов, что-то вроде этого будет работать:
Вам просто нужно сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для достижения этой цели. Надеюсь, что это полезно.
Рассмотрим это векторизованное решение. У него есть преимущество в том, что он создает один графический объект:
Более векторизованная версия ответа Стивена может быть следующей:
К сожалению, в настоящее время MATLAB не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать ‘patch’.
Я понимаю, что это поздний ответ, но он все еще действителен в случае, если кто-то еще пытается сделать то же самое.
Предполагая, что вы строите кубы (/ их ребра), альтернативой уже предоставленным ответам является использование кода plotcube от Оливера: plotcube
Преимущество этого решения заключается в том, что вы можете:
Для получения дополнительной информации о ‘patch’ см. patch документацию.
Я надеюсь, что это помогает кому-то.
Вот код ‘plotcube’ в случае, если ссылка на оригинальный код, сделанная Оливером, когда-нибудь прекратится:
вы можете сделать внутреннюю линию прозрачной, установив цвет = [0,65, 0,65, 0,65]. И вы можете использовать стиль штриховых линий для внутренних линий и сплошные линии для границ, чтобы сделать его более похожим на трехмерный объект.
В моем программном пакете я кодирую функцию mesh3 для построения трехмерных сеток тензорных произведений.
Как построить 3D сетку (куб) в Matlab
Привет, я хотел бы построить прозрачную сетку в форме куба с линиями внутри. Что-то вроде этого:
Однако мне удалось нарисовать только 2D сетку:
Использую Matlab R2009b. Если невозможно построить это в Matlab, не могли бы вы порекомендовать мне программное обеспечение, которое я мог бы использовать.
6 ответов
Если вы не возражаете против нескольких циклов for, сработает что-то вроде этого:
Вам просто нужно будет сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для этого. Надеюсь, что это поможет.
Вы можете сделать внутреннюю линию прозрачной, установив color = [0,65, 0,65, 0,65]. И вы можете использовать стиль пунктирной линии для внутренних линий и сплошных линий для границ, чтобы сделать его более похожим на трехмерный объект.
В моем программном пакете я кодирую функцию mesh3 для построения трехмерных сеток тензорного произведения.
Я понимаю, что это запоздалый ответ, но он все еще действителен на тот случай, если кто-то еще хочет сделать то же самое.
Предполагая, что вы рисуете кубы (/ их края), альтернативой уже предоставленным ответам является использование кода «plotcube» от Оливера: plotcube
Преимущество этого решения в том, что вы можете:
Все они могут быть константами или переменными. (например, фиксированный цвет края или цвет, который изменяется в зависимости от значения Z и т. д.)
Дополнительную информацию о «патче» см. В документации по патчу.
Надеюсь, это кому-то поможет.
Вот код ‘plotcube’ на тот случай, если ссылка на исходный код Оливера когда-нибудь сломается:
Более векторизованная версия ответа Стивена может быть следующей:
К сожалению, MATLAB в настоящее время не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать «патч».
Рассмотрим это векторизованное решение. У него есть преимущество в том, что он создает единый графический объект:
Как построить 3D сетку (куб) в Matlab
Привет я хотел бы построить прозрачную кубовидную сетку с линиями в нем. Что-то вроде этого:
Однако мне удалось нарисовать только 2D-сетку:
Я использую Matlab R2009b. Если это невозможно изобразить в Matlab, не могли бы вы порекомендовать мне программу, которую я мог бы использовать.
6 ответов
Если вы не возражаете против нескольких циклов, что-то вроде этого будет работать:
Вам просто нужно сделать сетку прозрачной, возможно, изменив свойства линии, я не думаю, что вы можете изменить альфа-значения для достижения этой цели. Надеюсь, что это полезно.
Рассмотрим это векторизованное решение. Преимущество в том, что он создает один графический объект:
Более векторизованная версия ответа Стивена может быть следующей:
К сожалению, в настоящее время MATLAB не поддерживает прозрачные линии (насколько мне известно). Если вам действительно нужно, чтобы они были прозрачными, я бы предложил использовать ‘patch’.
Я понимаю, что это запоздалый ответ, но он все еще действителен, если кто-то еще пытается сделать то же самое.
Предполагая, что вы строите кубы (/ их ребра), альтернативой уже предоставленным ответам является использование кода plotcube от Оливера: plotcube.
Преимущество этого решения в том, что вы можете:
Все они могут быть константами или переменными. (например, фиксированный цвет края или цвет, который изменяется в зависимости от значения Z и т. д.)
Чтобы добавить функциональность 2. и 3. (выше), измените раздел ‘cellfun(@patch. ‘) в коде Оливера, добавив в четыре дополнительные строки кода: (заменить целое cellfun раздел с этим; включая новые строки ‘EdgeAlpha’ и ‘EdgeColor’):
Для получения дополнительной информации о ‘patch’, пожалуйста, смотрите документацию к патчу.
Я надеюсь, что это помогает кому-то.
Вот код ‘plotcube’ в случае, если ссылка на оригинальный код, сделанная Оливером, когда-нибудь прекратится:
Creating 3-D Plots
This example shows how to create a variety of 3-D plots in MATLAB®.
Mesh Plot
The mesh function creates a wireframe mesh. By default, the color of the mesh is proportional to the surface height.
Surface Plot
The surf function is used to create a 3-D surface plot.
Surface Plot (with Shading)
Contour Plot
The contour function is used to create a plot with contour lines of constant value.
Quiver Plot
The quiver function plots 2-D vectors as arrows.
Slices through 3-D Volumes
The slice function displays data at planes that slice through volumetric data.
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.









