我尝试使用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')
答案 0 :(得分:7)
此代码应显示带有pi符号的刻度。两个轴都将标有符号字体。
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')
答案 1 :(得分: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')
这里是第二个但不是很好的可能性。您不使用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')
答案 2 :(得分:1)
David多次与Matlab的数据可视化工具进行了斗争,我建议将图像保存为图像并在photoshop,microsoft word或您选择的编辑器中创建数据标签。这将是更少的时间,更少的头痛,并最终看起来更好(抗锯齿文本等)。
答案 3 :(得分:1)
对Peterm职位的讨论:
可以以正常方式绘制graphik。之后,使用图窗口中提供的绘图工具GUI编辑绘图。在那里你可以将对象拖动到其他位置,编辑线等。 完成后,您可以通过选择菜单 - >文件 - >生成代码来生成代码。现在您将在MATLAB-Editor中找到剪切的代码,您可以将粘贴复制到您的应用程序/代码中以重复使用它。 因此,编辑整个绘图将更容易,而不是自己编写代码。