如何使轮廓标签(数字)的轮廓线使用相同的颜色?
9的观点(30天)
显示旧的评论
亲爱的MATLAB用户,
我想知道是否有可能使clabel遵循轮廓的颜色吗?这意味着数字与轮廓曲线有相同的颜色。
这里有一个例子可以生产使用MATLAB,我试图复制它。
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/938764/image.png)
(这个数字是来自:相位相干性在石墨烯由马克布莱恩Lundeberg]
这是我的MATLAB代码。
%的相位相干性石墨烯石墨烯中的相位相干。pdf格式,页9
clearvars;clc;关闭所有;文件关闭所有;格式短;格式紧凑的;
= 1;
t = 1;
kx = linspace(4 *π/ (sqrt(3) *), 4 *π/ (sqrt (3) *), 101);
[KX,肯塔基州]= meshgrid (KX, KX);
能量= t *√3 + 2 * cos(肯塔基州*)+ 4 * cos ((√6 (3) / 2) * KX * a)。* cos(肯塔基州(1/2)* *));
无花果=图(“单位”,“厘米”,“位置”,1、12、12);
% ax =轴(无花果、“单位”、“厘米”,“位置”,[2、2、8、8]);
ax =轴(图);
持有在;
(C、h) =轮廓(ax, KX,肯塔基州、能源、“线宽”,0.5);
% https://ww2.mathworks.cn/matlabcentral/answers/83483-labels-on-the-contour-have-too-many-digits
h。LevelList =圆(h。LevelList 3);
clabel (C、h、“字形大小”8“字体名”,“天线”);
h。LevelList = 0.30:0.20:3.00;
colormap(飞机)
%画一个正六边形(例如,布里渊区)
θ=(30:60:360)* 180(π/;
绿色=(4 *π/ (3 *))* (cos(θ);sin(θ)];%六边形的顶点
pgon = polyshape(绿色的);
情节(pgon);
轴平等的;
% saveas(无花果、“TBA_bands_hexagonal_contour”、“pdf”);
这是结果。
![](http://www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/938769/image.png)
最好的问候,
麒麟。
接受的答案
亚当Danz
2022年3月26日
编辑:亚当Danz
2022年3月26日
标签生成等值线与水平
改编自OP的代码:
= 1;
t = 1;
kx = linspace(4 *π/ (sqrt(3) *), 4 *π/ (sqrt (3) *), 101);
[KX,肯塔基州]= meshgrid (KX, KX);
能量= t *√3 + 2 * cos(肯塔基州*)+ 4 * cos ((√6 (3) / 2) * KX * a)。* cos(肯塔基州(1/2)* *));
无花果=图();
ax =轴(图);
持有在;
(C、h) =轮廓(ax, KX,肯塔基州、能源、“线宽”,0.5);
h。LevelList = 0.30:0.20:3.00;
clabel (C、h、“字形大小”8“字体名”,“天线”);
colormap(飞机)
设置轮廓标签颜色轮廓的颜色
- h是轮廓处理[~ h] =轮廓(__)
- 斧头是轴处理
drawnow ()%要求
斧子。这一= [min (h.LevelList), max (h.LevelList)];
clabelVals = str2double (get (h.TextPrims,“字符串”));
levelNorm = (clabelVals-ax.CLim (1))。/ (ax.CLim (2) -ax.CLim (1));
colorIdx =圆(levelNorm *(大小(ax.Colormap, 1) - 1)) + 1;
clabelRGB = uint8 ([ax.Colormap (colorIdx:) * 255 0(元素个数(colorIdx), 1)]) ';
集(h。TextPrims, {“ColorData”},mat2cell (clabelRGB 4(1、大小(clabelRGB, 2))) ');