在对数轴刻度中设置指数符号 - 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的主要内容,如果未能解决你的问题,请参考以下文章

在 matplotlib 颜色栏中设置次要刻度的数量

Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多

Winform中设置ZedGraph的多条Y轴的标题和刻度不显示十次幂

如何在 plt.colorbar 中设置刻度数?

如何在情节中使用这种科学记数法刻度?

matlab 如何更改figure坐标轴刻度为不等间距刻度