在Matlab绘图中手动绘制小记号-长度问题

在Matlab绘图中手动绘制小记号-长度问题,matlab,plot,Matlab,Plot,我正在使用以下工具手动绘制绘图轴的小刻度线: xg = [xlim(1):XMinorTickDistance:xlim(2)]; xg = repmat(xg,2,1); yg = [ylim(1) ylim(1)+XMinorTickLength]; yg = repmat(yg',1,size(xg,2)); XMinorTick = plot(xg,yg,'Color',TickColor,'LineWidth',TickLineWidth,'LineStyle','-','Marker

我正在使用以下工具手动绘制绘图轴的小刻度线:

xg = [xlim(1):XMinorTickDistance:xlim(2)];
xg = repmat(xg,2,1);
yg = [ylim(1) ylim(1)+XMinorTickLength];
yg = repmat(yg',1,size(xg,2));
XMinorTick = plot(xg,yg,'Color',TickColor,'LineWidth',TickLineWidth,'LineStyle','-','Marker','none');
当我用一个数字手动选择XMinorTickLength时,它会起作用。但是,我想通过这样做使其大小为刻度长度的一半:

a=get(gca,'TickLength')
XMinorTickLength=a(1)/2;
这不会使次要刻度的大小为主要刻度的一半。请问我做错了什么?

a=get(gca,'TickLength')
XMinorTickLength=a(1)/2;
将属性
TickLength
读入变量
a
,然后创建一个包含a/2的新变量
XMinorTickLength
。仅仅命名一个变量
XMinorTickLength
并不能告诉matlab将其解释为ticklength,它只是工作空间中的一个值。你需要

a=get(gca,'TickLength');
a(1) = a(1)/2;
set(gca,'TickLength',a); 

最后一行将修改后的
a
写回属性
TickLength

,谢谢您的回答,但这不是我想要的。我不想缩短主刻度的长度。我想画一个小刻度,大小是主刻度的一半。如果你再次阅读我的问题,我实际上画了一些线作为次要记号,我用变量XMinorTickLength定义次要记号的长度。当我手动调整此变量时,If works会找到。但是,我希望它能够根据我在文章中所包含的绘图的主要刻度来获取其值。但这并不能使它们减半,而是要小得多!哦,我误解了。根据“轴属性”文档中的TickLength定义,该值是最长可见x、y或z注释线的乘数。我想你可能需要得到你的可见轴的垂直尺寸,比如
xl=xlim;xlength=xlim(2)-xlim(1).
然后找到xlength、ylength和zlength中最长的一个(z仅适用于3d绘图)。然后将值
a(1)
乘以最长轴长度,得到可以绘制的绝对坐标。无论如何,如果你的问题是得到正确的记号长度,你现在也可以计算它们,而不是画你自己的线。