matlab中plot的markersize怎么换成单元格的单位
时间: 2024-03-17 19:47:05 浏览: 215
在Matlab中,可以使用函数"units"来更改绘图对象的单位。例如,要将markersize设置为单元格的单位,可以按照以下步骤操作:
1. 创建一个figure和axes对象,例如:
```Matlab
fig = figure;
ax = axes('Parent', fig);
```
2. 在axes对象上绘制数据,例如:
```Matlab
plot(ax, xdata, ydata, 'o', 'markersize', 5)
```
3. 更改markersize的单位为单元格,例如:
```Matlab
set(ax, 'Units', 'pixels');
pos = get(ax, 'Position');
set(ax, 'Units', 'normalized');
set(ax.Children, 'MarkerSize', pos(4)/20);
```
这里,我们首先将axes对象的单位更改为像素,然后获取其位置信息,再将单位更改为标准化单位并将markersize的值设置为单元格高度的1/20。
相关问题
修改这段代码,让绘制的每条曲线线型、标记样式和颜色都不一样,但是每次绘图都保持不变:function plot_excel_data2(filename) % filename: Excel 文件名 % 读取 Excel 文件,其中,ndata是一个矩阵,包含了Excel文件中的数值数据; % text是一个单元格数组,包含了Excel文件中的文本数据,alldata是一个单元格数组,包含了Excel文件中的所有数据(数值和文本); [ndata, text, alldata] = xlsread(filename); % 获取数据的行数和列数 [nrows, ncols] = size(ndata); % 取得第一列数据作为 x 轴 x = ndata(:, 1); % 取得第一行数据文本作为图例,从第2列到最后一列的文本作为曲线的图例。 legends = text(1, 2:end); % 绘制图像 figure; % 使用 lines(ncols-1) 函数生成一个包含 ncols-1 种颜色的颜色映射,然后在 plot 函数中使用 Color 参数指定曲线的颜色。 % 由于每条曲线都有自己的颜色映射,而且颜色映射是固定的,所以每次绘图时每条曲线的颜色都不同,但是每次绘图的曲线颜色也不会变化。 cmap = colormap(lines(ncols-1)); % 首先绘制左侧 y 轴图像; yyaxis left; plot(x, ndata(:, 2), '-o', 'Color', cmap(1, :)); ylabel(text(1, 2)); for i=2:ncols-2 hold on plot(x, ndata(:, i+1), '-o', 'Color', cmap(i, :)); end % 此处指定右侧y轴的数据列,需要特别指定! y_right = ndata(:, end); % 然后绘制右侧 y 轴图像,需要特别再次指定数据!颜色也用映射指定! yyaxis right; plot(x, y_right, '-o', 'Color', cmap(ncols-1, :)); ylabel(text(1, ncols)); legend(legends); xlabel(text(1, 1)); end
下面是修改后的代码,让每条曲线的线型、标记样式和颜色都不一样,但每次绘图都保持不变:
```matlab
function plot_excel_data2(filename)
% filename: Excel 文件名
% 读取 Excel 文件,其中,ndata是一个矩阵,包含了Excel文件中的数值数据;
% text是一个单元格数组,包含了Excel文件中的文本数据,alldata是一个单元格数组,包含了Excel文件中的所有数据(数值和文本);
[ndata, text, alldata] = xlsread(filename);
% 获取数据的行数和列数
[nrows, ncols] = size(ndata);
% 取得第一列数据作为 x 轴
x = ndata(:, 1);
% 取得第一行数据文本作为图例,从第2列到最后一列的文本作为曲线的图例。
legends = text(1, 2:end);
% 绘制图像
figure;
hold on;
% 每条曲线的线型、标记样式和颜色都不一样,但每次绘图都保持不变
for i = 1:ncols-1
plot(x, ndata(:, i+1), '-o', 'LineStyle', '--', 'Marker', '*', 'Color', [mod(i, 3)/3, mod(i, 5)/5, mod(i, 7)/7]);
end
hold off;
% 添加图例、轴标签和标题
legend(legends);
xlabel(text(1, 1));
ylabel('Data');
title('Multiple Lines with Different LineStyles, Markers and Colors');
% 设置'HandleVisibility'参数为'off',使得每次绘图都保持不变
set(gcf, 'HandleVisibility', 'off');
end
```
在这个修改后的代码中,我们使用了一个循环来绘制每条曲线,并为每条曲线指定了不同的线型、标记样式和颜色。我们还设置了'HandleVisibility'参数为'off',以确保每次绘图都保持不变。
voronoi划分 matlab
### 如何在 MATLAB 中进行 Voronoi 划分
#### 使用 `voronoin` 函数创建 Voronoi 图
为了在 MATLAB 中执行 Voronoi 划分,可以利用内置函数 `voronoin` 来计算 n 维空间中的 Voronoi 多胞体。对于二维情况,则可以直接应用更简单的命令来绘制图形。
```matlab
% 定义一组点作为输入数据集
points = [0.5 0.5; 1 1; 2 3; 3 2; 4 4];
% 计算Voronoi图并获取顶点坐标和多边形索引
[V,C] = voronoin(points);
% 显示原始点的位置
figure;
plot(points(:,1), points(:,2), 'r.','MarkerSize',15);
hold on;
% 遍历每一个区域画出对应的Voronoi单元格
for i = 1:length(C)
cellVertices = V(C{i}, :); % 获取当前细胞的所有顶点
if all(cellVertices ~= Inf) % 如果不是无限远的边缘
patch('Faces', C{i}, ...
'Vertices', V, ...
'FaceColor','b', ...
'EdgeColor','k');
end
end
axis equal tight;
title('Voronoi Diagram in MATLAB');
xlabel('X Axis');
ylabel('Y Axis');
legend({'Input Points'},'Location','Best')
```
此段代码展示了如何定义一系列散点,并通过调用 `voronoin()` 函数获得这些点所构成的 Voronoi 图结构。随后遍历各个 Voronoi 单元格并将它们可视化出来[^1]。
#### 调整绘图细节
当处理实际应用场景时,可能需要调整一些参数以适应特定需求,例如改变颜色方案、增加标签说明或是修改轴的比例等。此外,在某些情况下还可能会遇到边界条件的问题——即部分 Voronoi 边界延伸至无穷远处;此时可以通过设定合理的裁剪范围来解决这个问题[^2]。
#### 应用场景扩展
除了基本的平面几何外,MATLAB 的功能也支持更高维度的空间分析以及复杂环境下的路径规划等问题。这使得该方法不仅限于理论研究领域内的简单展示,同样适用于工程实践当中更为复杂的任务,如机器人导航避障等方面的应用开发工作[^3]。
阅读全文
相关推荐















