首页 > 解决方案 > GNU Octave Matlab:绘制刻度标记

问题描述

我正在制作一个频率图,我想要一些关于刻度标签的帮助。这是我所拥有的: 频率图

semilogx([200,1000,5000], [0,6,0]);
xlim([20 20000]);
sc = [20:10:100,125:25:175];
scale = [sc,sc*10,sc*100, 20000];
xticks(scale);
xticklabels(scale);
set(gca,'XMinorTick','Off')
grid on;
set (gca, "xminorgrid", "off")
xlabel('frequency (Hz)');
ylabel('dB');
  1. 如何使 1000 及以上的所有数字显示为 1K、2K、5K 等?
  2. 我怎样才能使 50,100,200,500,1K,2K,5K,10K 上的线条看起来更粗/更黑?

标签: matlabplotoctavelabelingxticks

解决方案


在 MATLAB 中

*不幸的是,我还没有找到如何加粗特定行

添加以下代码可以将刻度转换为第 1 部分中建议的新名称/格式。对于第 2 部分,我现在能找到的最好的方法是将特定数字加粗,不幸的是,不是特定的刻度/行。这里\bf指示哪些标签要加粗。所有名称都将对应于您的轴向量最初设置的位置scale。下面代码的最后一行表示当前轴的替换,gca.

定制轴

semilogx([200,1000,5000],[0,6,0]);
sc = [20:10:100,125:25:175];
scale = [sc,sc*10,sc*100, 20000];

Current_Axis = gca;
Current_Axis.XMinorTick = 'off';
xlabel('frequency (Hz)'); ylabel('dB');
xlim([20 20000]);
grid on;

X_Scale_Names = {'\bf20'; '30'; '40'; '\bf50'; '60';
'70';'80';'90';'\bf100';'125';'150';'175';'\bf200';'300';'400';
'500';'600';'700';'800';'900';'\bf1K';'1.25K';'1.5K';'1.75K';
'\bf2K';'3K';'4K';'\bf5K';'6K';'7K';'8K';'9K';'\bf10K';'12.5K';'15K';
'17.5K';'20K'};

要调整更多网格和轴属性:

Current_Axis = gca;
set(Current_Axis,'xtick',scale,'xticklabel',X_Scale_Names);
Current_Axis.LineWidth = 1;
Current_Axis.GridColor = 'k';
Current_Axis.GridAlpha = 0.5;

使用 MATLAB R2019b 运行


推荐阅读