matlab tick
x=1:8;
subplot(2,2,1)
plot(x)
%tick style 0(auto)
subplot(2,2,2)
plot(x)
set(gca,'xtick',[1 3 6 8]);%style 1
set(gca,'ytick',[]);%style 2
subplot(2,2,3)
plot(x)
set(gca,'xtick',[1 3 6 8]);
set(gca,'xticklabel',sprintf('%03.4f|',get(gca,'xtick')));%style 3
set(gca,'ytick',[2 4 5 7]);
set(gca,'yticklabel',{'Two','Four','Five','Seven'});%style 4
subplot(2,2,4)
plot(x)
set(gca,'xminortick','on');%style 5
set(gca,'ticklength',[0.05 0.025]);%style 6
set(gca,'tickdir','out');%style 7
1. label旋转坐标轴的label可以在label axis 的时候设置旋转角度 xlabel(str,'Rotation',Rotaiondegree) xlabel('This is xlabel','Rotation',15,'fontsize',20)
2. title旋转figure title也可以通过设置旋转属性来实现旋转,和label一样 hold on title('This is title','rotation',15,'fontsize',20)
3. ticklabel的旋转matlab中ticklabel并没有Rotation这一属性可以设置,所以得另想办法。text是可以设置旋转属性(Rotation)的,所以可以用text函数给figure在相应位置标上ticklabel,然后旋转。
plot([0 1],[0 1]);% 获取xticklabel的值 xtl=get(gca,'XTickLabel'); % 获取xtick的值 xt=get(gca,'XTick'); % 获取ytick的值 yt=get(gca,'YTick'); % 设置text的x坐标位置们 xtextp=xt; % 设置text的y坐标位置们 ytextp=(yt(1)-0.2*(yt(2)-yt(1)))*ones(1,length(xt)); % rotation,正的旋转角度代表逆时针旋转,旋转轴可以由HorizontalAlignment属性来设定,% 有3个属性值:left,right,center text(xtextp,ytextp,xtl,'HorizontalAlignment','right','rotation',45,'fontsize',15); % 取消原始ticklabel set(gca,'xticklabel','');
自己做了一个自由标刻度的函数可以解决。有不尽完美之处还望各位指教。
%axis为'x'或'y',分别表示更改x或y刻度
%ticks是字符cell
function settick(axis,ticks)
n=length(ticks);
tkx=get(gca,'XTick');tky=get(gca,'YTick');
switch axis
case 'x'
w=linspace(tkx(1),tkx(end),n);
set(gca, 'XTick', w, 'XTickLabel', []);%刷新刻度,去掉刻度值
yh=(14*w(1)-w(end))/13;%按坐标轴比例调整刻度纵坐标位置
for i=1:n
text('Interpreter','tex','String',ticks(i),'Position',[w(i),yh],'horizontalAlignment', 'center');
end
case 'y'
w=linspace(tky(1),tky(end),n);
set(gca, 'YTick', w, 'YTickLabel', []);
xh=(11*w(1)-w(end))/10;
for i=1:n
text('Interpreter','tex','String',ticks(i),'Position',[xh,w(i)],'horizontalAlignment', 'center');
end
end
例如:
x=0:0.1:4*pi;plot(x,sin(x));ticks={'G_1' 'G_2' 'G_3' 'G_4' 'G_5'};settick('x',ticks)
figure;x=0:0.1:4*pi;plot(x,sin(x));ticks={'G_1' 'G_2' 'G_3' 'G_4' 'G_5'};settick('y',ticks)
subplot(2,2,1)
plot(x)
%tick style 0(auto)
subplot(2,2,2)
plot(x)
set(gca,'xtick',[1 3 6 8]);%style 1
set(gca,'ytick',[]);%style 2
subplot(2,2,3)
plot(x)
set(gca,'xtick',[1 3 6 8]);
set(gca,'xticklabel',sprintf('%03.4f|',get(gca,'xtick')));%style 3
set(gca,'ytick',[2 4 5 7]);
set(gca,'yticklabel',{'Two','Four','Five','Seven'});%style 4
subplot(2,2,4)
plot(x)
set(gca,'xminortick','on');%style 5
set(gca,'ticklength',[0.05 0.025]);%style 6
set(gca,'tickdir','out');%style 7
1. label旋转坐标轴的label可以在label axis 的时候设置旋转角度 xlabel(str,'Rotation',Rotaiondegree) xlabel('This is xlabel','Rotation',15,'fontsize',20)
2. title旋转figure title也可以通过设置旋转属性来实现旋转,和label一样 hold on title('This is title','rotation',15,'fontsize',20)
3. ticklabel的旋转matlab中ticklabel并没有Rotation这一属性可以设置,所以得另想办法。text是可以设置旋转属性(Rotation)的,所以可以用text函数给figure在相应位置标上ticklabel,然后旋转。
plot([0 1],[0 1]);% 获取xticklabel的值 xtl=get(gca,'XTickLabel'); % 获取xtick的值 xt=get(gca,'XTick'); % 获取ytick的值 yt=get(gca,'YTick'); % 设置text的x坐标位置们 xtextp=xt; % 设置text的y坐标位置们 ytextp=(yt(1)-0.2*(yt(2)-yt(1)))*ones(1,length(xt)); % rotation,正的旋转角度代表逆时针旋转,旋转轴可以由HorizontalAlignment属性来设定,% 有3个属性值:left,right,center text(xtextp,ytextp,xtl,'HorizontalAlignment','right','rotation',45,'fontsize',15); % 取消原始ticklabel set(gca,'xticklabel','');
自己做了一个自由标刻度的函数可以解决。有不尽完美之处还望各位指教。
%axis为'x'或'y',分别表示更改x或y刻度
%ticks是字符cell
function settick(axis,ticks)
n=length(ticks);
tkx=get(gca,'XTick');tky=get(gca,'YTick');
switch axis
case 'x'
w=linspace(tkx(1),tkx(end),n);
set(gca, 'XTick', w, 'XTickLabel', []);%刷新刻度,去掉刻度值
yh=(14*w(1)-w(end))/13;%按坐标轴比例调整刻度纵坐标位置
for i=1:n
text('Interpreter','tex','String',ticks(i),'Position',[w(i),yh],'horizontalAlignment', 'center');
end
case 'y'
w=linspace(tky(1),tky(end),n);
set(gca, 'YTick', w, 'YTickLabel', []);
xh=(11*w(1)-w(end))/10;
for i=1:n
text('Interpreter','tex','String',ticks(i),'Position',[xh,w(i)],'horizontalAlignment', 'center');
end
end
例如:
x=0:0.1:4*pi;plot(x,sin(x));ticks={'G_1' 'G_2' 'G_3' 'G_4' 'G_5'};settick('x',ticks)
figure;x=0:0.1:4*pi;plot(x,sin(x));ticks={'G_1' 'G_2' 'G_3' 'G_4' 'G_5'};settick('y',ticks)