在对数轴刻度中设置指数符号 - Matlab
Posted
技术标签:
【中文标题】在对数轴刻度中设置指数符号 - Matlab【英文标题】:Setting exponential notation in log axes ticks - Matlab 【发布时间】:2014-05-30 14:16:06 【问题描述】:我正在使用 semilogx 以对数刻度绘制数据,并让 Matlab 用自动刻度和刻度标签标记轴。
这通常效果很好,除非范围不包括 10 的幂。在这些情况下,我会得到如下刻度线: 10^2.2 10^2.3 10^2.4 ... 阅读和解释真的很不舒服!
有没有办法强制刻度标签更正指数符号(即 150 x 10^2)?
(硬编码标签不是一种选择,因为轴范围会动态变化)
【问题讨论】:
我会在声望达到 10 时添加一张图片来说明问题;) 你去!发布图片:) 几个问题...所需的符号会改变还是情节总是需要 150x10^something 形式的符号?由于调整大小和缩放等或重新绘制不同的数据,范围是否动态变化? @RTL 是的,我希望始终使用这种类型的符号。由于数据不同,范围正在发生变化。我找到了解决方法,请参阅下面的答案。不过也欢迎其他想法! 【参考方案1】:您可以将刻度标签更改回实际值,而不是指数标签,例如:
set(gca, 'XTickLabel', get(gca,'XTick'))
这只是使用每个 XTick 出现的实际值作为该 XTick 的图例。您最终会得到奇数(因为它们将对应于统一对数间隔的值),但至少它们是可读的。
【讨论】:
感谢 dpwe,这确实会产生可读的标签,但是如果数字很大(在 1e6 或 1e7 范围内),它们不是很整洁。请参阅我找到的解决方案的其他答案【参考方案2】:好的,我用 sprintf 解决了:
xt = get(gca,'xtick')
xt_label = sprintf('%.2e|',xt)
set(gca,'xticklabel',xt_label)
现在我明白了:
【讨论】:
以上是关于在对数轴刻度中设置指数符号 - Matlab的主要内容,如果未能解决你的问题,请参考以下文章
Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多