Sar*_*rah 5 matlab plot axis-labels
我已经创建了一个包含Excel文件数据的图表.我需要保留所有的xticks,但xticklabels只出现在每6个刻度上.我试过这样做:
tickStep=6;
Sheet=2;
filename='MyData.xlsx';
[~,xAxis]=xlsread(filename,Sheet,'A2:A60');
yAxis=xlsread(filename,Sheet,'B2:B60');
plot(1:numel(xAxis),yAxis)
set(gca,'xtick',1:numel(xAxis))
set(gca,'xticklabel',xAxis(1:tickStep:numel(xAxis)))
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不起作用,因为所有的xticks都被绘制了,但xticklabels出现在每个xtick上,而不是像我试图实现的那样每6个出现一次.我花了很长时间考虑解决方案:-(.我需要帮助.谢谢.
编辑:我已经包含了一个图片,以帮助回答以下问题:
关于这篇文章,xticks是否有可能每4个xticks出现而不是保留所有这些,同时每6个xtick绘制xticklabels?,不确定这一点.
您仍然需要为没有标签的刻度输入空字符串(或空单元格).您可以通过用以下三行替换最后一行来完成此操作:
xTickLabels = cell(1,numel(xAxis)); % Empty cell array the same length as xAxis
xTickLabels(1:tickStep:numel(xAxis)) = xAxis(1:tickStep:numel(xAxis));
% Fills in only the values you want
set(gca,'XTickLabel',xTickLabels); % Update the tick labels
Run Code Online (Sandbox Code Playgroud)
编辑以回答以下问题......
标签看起来偏离刻度的原因是因为字母的底部似乎与刻度线对齐.我猜你想让文字对齐,使每个字母的中心与刻度线对齐.使用标准MATLAB轴无法做到这一点,但MathWorks文件交换中有一些提交将刻度标签转换为文本对象,因此为您提供了更多自定义文本属性的选项:
将标签转换为文本对象后,可以分别通过修改'Rotation'
和'VerticalAlignment'
属性来调整旋转或垂直对齐.
归档时间: |
|
查看次数: |
6051 次 |
最近记录: |