|
本帖最后由 chybeyond 于 2014-7-19 00:50 编辑
- function ht = my_xticklabels(varargin)
- %MY_XTICKLABELS replaces XTickLabels with "normal" texts
- % accepting multiline texts and TEX interpreting
- % and shrinks the axis to fit the texts in the window
- %
- % ht = my_xticklabels(Ha, xtickpos, xtickstring)
- % or
- % ht = my_xticklabels(xtickpos, xtickstring)
- %
- % in: xtickpos XTick positions [N*1]
- % xtickstring Strings to use as labels {N*1} cell of cells
- %
- % Examples:
- % plot(randn(20,1))
- % xtl = {{'one';'two';'three'} '\alpha' {'\beta';'\gamma'}};
- % h = my_xticklabels(gca,[1 10 18],xtl);
- % % vertical
- % h = my_xticklabels([1 10 18],xtl, ...
- % 'Rotation',-90, ...
- % 'VerticalAlignment','middle', ...
- % 'HorizontalAlignment','left');
- % Pekka Kumpulainen 12.2.2008
- textopts = {};
- if length(varargin{1})==1 && ...
- ishandle(varargin{1}) && ...
- strcmpi(get(varargin{1},'Type'),'axes');
- Ha = varargin{1};
- xtickpos = varargin{2};
- xtickstring = varargin{3};
- if nargin > 3
- textopts = varargin(4:end);
- end
- else
- Ha = gca;
- Hfig = get(Ha,'Parent');
- xtickpos = varargin{1};
- xtickstring = varargin{2};
- if nargin > 2
- textopts = varargin(3:end);
- end
- end
- set(Ha,'XTick',xtickpos, 'XTickLabel','')
- h_olds = findobj(Ha, 'Tag', 'MUXTL');
- if ~isempty(h_olds)
- delete(h_olds)
- end
- %% Make XTickLabels
- NTick = length(xtickpos);
- Ybot = min(get(gca,'YLim'));
- ht = zeros(NTick,1);
- for ii = 1:NTick
- ht(ii) = text('String',xtickstring{ii}, ...
- 'Units','data', ...
- 'VerticalAlignment', 'top', ...
- 'HorizontalAlignment', 'center ', ...
- 'Position',[xtickpos(ii) Ybot], ...
- 'Tag','MUXTL');
- end
- if ~isempty(textopts)
- set(ht,textopts{:})
- end
- %% squeeze axis if needed
- set(Ha,'Units','pixels')
- Axpos = get(Ha,'Position');
- % set(Hfig,'Units','pixels')
- % Figpos = get(Hfig,'Position');
- set(ht,'Units','pixels')
- TickExt = zeros(NTick,4);
- for ii = 1:NTick
- TickExt(ii,:) = get(ht(ii),'Extent');
- end
- needmove = -(Axpos(2) + min(TickExt(:,2)));
- if needmove>0;
- Axpos(2) = Axpos(2)+needmove+2;
- Axpos(4) = Axpos(4)-needmove+2;
- set(Ha,'Position',Axpos);
- end
- set(Ha,'Units','normalized')
- set(ht,'Units','normalized')
复制代码 Matlab图形中title、xlabel、ylabel、zlabel、textbox和legend等支持latex,xticklabel好像不行,可以用上面函数实现
|
评分
-
1
查看全部评分
-
|