matlab的x轴是log10,正和负Log10在Matlab中缩放Y轴

使用实际数据作为标签,但使用log10缩放绘制的数据.

% data

x = -3:0.1:3;

y = sign(x).*10.^abs(x);

% scaling function

scale = @(x) sign(x).*log10(abs(x));

N = 7; % number of ticks desired

% picking of adequate values for the labels

TickMask = linspace(1,numel(y),N);

YTickLabels = y(TickMask);

% scale labels and plotdata, remove NaN ->inconsistency, do you really want that?

YTick = scale( YTickLabels );

Y = scale(y);

YTick(isnan(YTick)) = 0;

Y(isnan(Y)) = 0;

% plot

plot(x,Y)

set(gca,'YTick',YTick,'YTickLabels',YTickLabels)

grid on

对于N = 7:

对于N = 11

如何找到N的有效值?

以下函数(thanks to gnovice)将返回您可以为N选择的所有可能值:

n = numel(x);

N = find(rem(n./(1:n), 1) == 0) + 1;

关于半成品风格的标签:通过在情节之前添加以下行:

YTickLabels = cellfun(@(x) ['10^' num2str(x)], num2cell(YTick),'UniformOutput',false)

你至少可以达到这样的目的:

不漂亮而不通用,但是一个好的开始.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值