名字外轮廓水平的情节
3视图(30天)
显示旧的评论
接受的答案
明星黾
2021年11月16日
我花了比预期更长的时间得到这个工作。
注意:
它
只有
适用于轮廓,相交
y
设在在右边。策划
山峰
完全混淆了它,所以它给了错误的结果,但是它不会抛出任何错误。
x = 0:0.01:1;
y =双曲正切(x) + 0.05;
z = x (:) * y;
图
(c、h) = contourf (x, y, z,“ShowText”,“关闭”);
持有在
级= h.LevelList;
idx = 1(大小(级));
xlv = xlim;
为k1 = 1:元素个数(级)
级(k1);
lc =找到((c(: 1) = =级(k1)) & (mod (c (2:), 1) = = 0));
seglen = c (lc);
seglenix = seglen > 1;
如果任何(seglenix)
为k2 = 1:元素个数(seglen (seglenix))
lciv = lc (k2) + (1: seglen (k2));%的水平轮廓指数向量
lciv lcvm = [c (1);c (2, lciv)];%的水平轮廓矩阵
% lcvc {k1, k2} = [c (1, lciv);c (2, lciv)];%水平轮廓单元阵列
[maxx、idxx] = max (lcvm (1:));
%的阴谋(lcvm (1、idxx) lcvm (2, idxx),“p”)
ylbl (:, k1) =(级(k1);idxx lcvm(1日);idxx lcvm (2)];% Y-Label矩阵
结束
结束
%流(' \ n - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ n”)
结束
% display_ylabel_matrix = ylbl
持有从
文本((大小(ylbl(1,:))) *马克斯(xlim) ylbl(3:),组成(' % 0.2 f 'ylbl (:)),“水平的”,“左”,“绿色”,“中间”)
我测试它的功能,它需要满足标准,而且它似乎相当强劲。
。
更多的答案(2)
凯利卡尼
2021年11月16日
使用内置的contour-related函数…不,不是真的。轮廓标签Matlab图形的最小可定制的部分之一。为了做到这一点,我建议手动计算预计每个轮廓相交的右边你的情节,然后添加文本对象。
亚当Danz
2021年11月16日
编辑:亚当Danz
2021年11月16日
下面的演示
- 产生一个contourf情节
- 提取等值线的坐标
- 决定与正确的线相交轴边缘
- 块文本标签在十字路口(如果有的话)
请注意,这适用于所有轮廓我测试,甚至包括那些不相交的轴(包括他们的标记不会)。
%绘制contourf
x = 0: .1:1;
y = x;
z = x (:)。* y (:) ';
甘氨胆酸ax = ();
厘米= contourf (ax, x, y, z);
%得到轮廓线坐标
contourTable = getContourLineCoordinates(厘米);
%得到指数线相交轴的右边缘
%轴(ax,“紧”)%
intersectsWithY = contourTable。X = = ax.XLim (2);
%去除重复值
edgeCoordinates = [contourTable.X (intersectsWithY) contourTable.Y (intersectsWithY) contourTable.Level (intersectsWithY)];
edgeCoordUnq =独特(edgeCoordinates,“行”);
%的外边缘上添加文本指示水平值正确的轴
(ax,“上”)
xlim (ax, xlim (ax))
ylim (ax, ylim (ax))
文本(edgeCoordUnq (: 1), edgeCoordUnq(:, 2),组成(“% .2g”edgeCoordUnq (: 3)),…
“HorizontalAlignment”,“左”,“VerticalAlignment”,“中间”,…
“字形大小”,8)
colorbar (ax)
比较标记轮廓的版本,