gpt4 book ai didi

matlab - GNU Octave Matlab : Plot tick labeling

转载 作者:行者123 更新时间:2023-12-04 00:13:50 27 4
gpt4 key购买 nike

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

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 上的线条显得更粗/更黑?

最佳答案

Octave 方法(可能也适用于 matlab)

老实说,我不会依赖 latex 的诡计来做到这一点。
这是我通常做这种事情的方式。
实际上,因为轴标签对象被认为是单个对象,并且您不能将其拆分为多个部分,所以诀窍是覆盖一个不可见的、最小限度的轴对象,仅定义您想要的标签,并按照您的意愿对待它们(例如调整其字体粗细、字体大小、xcolor 等)。

H = semilogx([200,1000,5000], [0,6,0]);
A = gca();
B = axes();

subscale = [20:10:100,125:25:175];
scale = [subscale,subscale * 10,subscale * 100, 20000];

ScaleTextLabels = {};
for i = 1 : length( scale )
if scale(i) >= 1000, ScaleTextLabels{i} = sprintf("%dk", scale(i) / 1000 );
else, ScaleTextLabels{i} = num2str( scale(i) );
end
end

SpecialTickLabels = { '50', '100', '200', '500', '1k', '2k', '5k', '10k'};
ScaleIndices = 1 : length( ScaleTextLabels );
SpecialIndices = nthargout( 2, @ismember, SpecialTickLabels, ScaleTextLabels );
NormalIndices = setdiff( ScaleIndices, SpecialIndices );

set( A, 'xgrid', 'on', 'xlabel', 'frequency (Hz)', 'xlim', [20 20000] , 'xminorgrid', 'off', 'xminortick', 'off', 'xticklabel', ScaleTextLabels(NormalIndices), 'xtick', scale(NormalIndices) , 'ylabel', 'dB', 'gridlinestyle', ':', 'gridcolor', 'k', 'gridalpha', 0.5 );
set( B, 'xgrid', 'on', 'xlabel', '' , 'xlim', get( A, 'xlim' ), 'xminorgrid', 'off', 'xminortick', 'off', 'xticklabel', ScaleTextLabels(SpecialIndices), 'xtick', scale(SpecialIndices), 'ylabel', '' , 'color', 'none', 'fontsize', 12, 'fontweight', 'bold', 'position', get( A, 'position'), 'xcolor', [0,0,0], 'xscale', 'log', 'ylim', get( A, 'ylim'), 'ytick', [], 'gridlinestyle', '--', 'gridcolor', 'k', 'gridalpha', 0.8 );

一般来说,这种“透明轴对象层”技术非常有用,它在设计复杂图形时提供了极大的灵 active 。 :)

关于matlab - GNU Octave Matlab : Plot tick labeling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65585584/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com