2

http://www.mathworks.com/matlabcentral/fileexchange/23841を使用して、次のようにこれを実行しようとしました:

data=rand(5);

plot(0:pi/4:pi, data,'LineWidth', 3);

format_ticks(gca,{'0', '\pi/4', '\pi/2', '3\pi/4', '\pi'},[],0:pi/4:pi)

ylim([0 1]);
xlabel('My x label')
ylabel('My y label')

fontSize = 20;

set(gca,'FontSize',fontSize)

ただし、x 軸のラベルが x の目盛りラベルと重なっているように見えますか? 誰かが私が間違っていることを見ていますか、それともこれを行うためのより良い方法を提案できますか? また、軸ラベルのフォント サイズが y 目盛りラベルと同じに見えませんか?

---- 編集 -------- format_ticks を使用しないと、これは xticks を xlabel とオーバーラップさせるのと同じ動作を生成するようです:

data=rand(5);

plot(0:pi/4:pi, data,'LineWidth', 3);

format_ticks(gca,{'0', '\pi/4', '\pi/2', '3\pi/4', '\pi'},[],0:pi/4:pi)

ylim([0 1]);
xlabel('My x label')
ylabel('My y label')

fontSize = 20;
set(gca,'FontSize',fontSize,'Font','symbol')
4

4 に答える 4

7

このコードは、pi 記号でティックを表示する必要があります。両方の軸には Symbol フォントのラベルが付けられます。

x=[-2*pi():.1:2*pi()];
plot(x,pi*sin(x))

set(gca,...
 'xlim',[-2*pi() 2*pi()],...
 'xtick',[-2*pi():pi()/2:2*pi()],...
 'xticklabel',{'-2p' '-3p/2' '-p' '-p/2' '0' 'p/2' 'p' '3p/2' '2p'},...
 'ylim',[-pi() pi()],...
 'ytick',[-pi():pi()/2:pi()],...
 'yticklabel',{'-p' '-p/2' '0' 'p/2' 'p'},...
 'fontname','symbol',...
 'fontsize',20)

xlabel('angle \phi from -2\pi to 2\pi',...
 'fontname','helvetica',...
 'fontsize',30)
ylabel('\pi*sin(\phi)',...
 'fontname','helvetica')

ボット軸の同じフォント

異なる軸の異なるフォントの場合:

x=[-2*pi():.1:2*pi()];
ax1=axes;
ax2=axes;
plot(x,sin(x),'parent',ax1)

set(ax1,...
 'xlim',[-2*pi() 2*pi()],...
 'xtick',[],...
 'xticklabel',{},...
 'ylim',[-1 1],...
 'ytick',[-1:.5:1],...
 'yticklabel',{'-a' '-a/2' '0' 'a/2' 'a'},...
 'fontsize',20)

ylabel(ax1,'a\cdotsin(\phi)',...
 'fontname','helvetica',...
 'fontsize',30)

set(ax2,...
 'xlim',[-2*pi() 2*pi()],...
 'xtick',[-2*pi():pi()/2:2*pi()],...
 'xticklabel',{'-2p' '-3p/2' '-p' '-p/2' '0' 'p/2' 'p' '3p/2' '2p'},...
 'ylim',[-1 1],...
 'ytick',[],...
 'yticklabel',{},...
 'fontname','symbol',...
 'fontsize',20,...
 'position',get(ax1,'position'),...
 'color','none')

xlabel(ax2,'angle \phi from -2\pi to 2\pi',...
 'fontname','helvetica')

軸ごとに異なるフォント

于 2013-08-28T12:41:22.063 に答える
1

MATLAB-help を使用すると、次のように解決できます。

figure(1)
data=rand(5);
plot(0:pi/4:pi, data,'LineWidth', 3);
fontSize = 20;
set(gca,'FontSize',fontSize)
set(gca,'XTick',0:pi/4:pi)
set(gca,'XTickLabel',{'0', 'pi/4', 'pi/2',
'3pi/4', '\pi'})
ylim([0 1]);
xlabel('My x label') 
ylabel('My y label')

ここで2番目ですが、あまり良くない可能性があります。XTickLabel を使用しません。代わりにテキストを作成します。

figure(1)
data=rand(5);
plot(0:pi/4:pi, data,'LineWidth', 3);
fontSize = 20;
set(gca,'FontSize',fontSize)
set(gca,'XTick',0:pi/4:pi)
set(gca,'XTickLabel',[])
text(0,0,'\pi','VerticalAlignment','Top')
text(pi/4,0,'\pi/2','VerticalAlignment','Top')
text(pi/2,0,'\pi/2','VerticalAlignment','Top')
text(3*pi/4,0,'3\pi/4','VerticalAlignment','Top')
text(pi,0,'\pi','VerticalAlignment','Top')
ylim([0 1]);
xlabel('My x label')
ylabel('My y label')

for を使用して text() を実行することもできます。

より自動化:

figure(1)
data=rand(5);
plot(0:pi/4:pi, data,'LineWidth', 3);
fontSize = 15;
set(gca,'FontSize',fontSize)
sep = 0:0.25:1; % only here you setup
set(gca,'XTick',sep*pi)
set(gca,'XTickLabel',[])
for n = 1:length(sep)
   text(sep(n)*pi,0,[num2str(sep(n)),'\pi'],...
      'VerticalAlignment','Top',...
      'HorizontalAlignment','Center')
end
ylim([0 1]);
xlabel('My x label')
ylabel('My y label')
于 2013-08-27T20:53:05.003 に答える
1

Petermの投稿への議論へ:

グラフィックを通常の方法でプロットすることは可能です。その後、Figure ウィンドウで提供されるプロット ツール GUI を使用してプロットを編集します。そこで、オブジェクトを他の位置にドラッグしたり、行を編集したりできます。終了したら、[メニュー] -> [ファイル] -> [コードの生成] を選択して、これからコードを生成できます。これで、MATLAB エディターで切り取られたコードが見つかります。アプリケーション/コードにコピーして貼り付けて再利用できます。したがって、自分でコーディングするよりも、プロット全体を編集する方が簡単です。

于 2013-08-29T20:43:38.567 に答える