箭头加直线_【Matlab学习秘籍】绘制带箭头的流线
散文作家问题来源:某讨论群某同学的提问,想做出⼀个带有箭头电场的流线图。
绘制流线,Matlab提供了streamline函数,由于我也是第⼀次遇到这个问题,于是乎打开streamline的帮助⽂档,然后仔细查看⼀番,⼼⾥便有了思路,开始动⼿实践,下⾯就以这个函数的官⽅帮助⽂档⾥的demo来演⽰,如何实现在流线上绘制箭头。
clear; clc;
保险公司招聘信息% 直接把streamline函数的帮助⽂档demo拷贝过来
[x,y] = meshgrid(0:0.1:1, 0:0.1:1);
u = x;
v = -y;
startx = 0.1:0.1:0.9;
starty = ones(size(startx));
% 需要获取所有流线的属性形容未来的成语
cpu是什么意思
好色男人lines = streamline(x, y, u, v, startx, starty);
% 下⾯开始画箭头,涉及到坐标的转换
% 获取 Axes 位置
posAxes = get(gca, 'Position');
posX = posAxes(1);
posY = posAxes(2);
width = posAxes(3);
夏威夷果的功效与作用height = posAxes(4);
平常近义词% 获取 Axes 范围
limX = get(gca, 'Xlim');
limY = get(gca, 'Ylim');
minX = limX(1);
maxX = limX(2);
minY = limY(1);
maxY = limY(2);
% 遍历,逐条流线加箭头
for i = 1 : length(lines)
% 获取每条流线的数据
xData = lines(i).XData;
yData = lines(i).YData;
% 这⾥取的是最后两个点,⼀定要是相邻的两个点⽤来确定箭头⽅向 x0 = xData(end-1 : end);
y0 = yData(end-1 : end);
% 转换坐标到相对于figure的坐标
xNew = posX + (x0 - minX) / (maxX - minX) * width;
yNew = posY + (y0 - minY) / (maxY - minY) * height;
% 画箭头
hold on
annotation('arrow', xNew, yNew, 'color', 'b');
end
hold off
title('带箭头的流线图');
看看效果图:
带有箭头的流线图
【秘籍】
1. 获取流线的坐标数据,如何获取,查看帮助⽂档得知,绘制时赋值即可获取到所有绘制对象的属性,然后逐条流线获取数据即可;
2. 绘制箭头,这个⽅法前⾯也有⽂章提到过(【Matlab学习秘籍】绘制带箭头直线),这⾥把主要过程也重复了⼀遍;中国古代神话人物
3. 关于箭头的两个坐标,选取两个相邻的点,⽅便确定箭头的⽅向。