Julia 绘制对数轴:通过 (0.1, 1, 10) 标签更改 10 的 (-1, 0, 1) 次方(仅)

问题描述 投票:0回答:1

我讨厌那些带有以下标签的(半/对数)对数图:10^⁻1、10⁰ 和 10¹ 标签。

有一个很好的方法来改变这些,简单地说:0.1、1和10好吗?

plot(x, y, yscale=:log10, label="", yformatter = yi -> yi==0.1 ? "0.1" : yi==1 ? "1" : yi==10 ? "10" : yi) 

完成了工作的部分,但是如何保持 |p|>1 的默认 10^p 格式?

julia logarithm formatter plots.jl
1个回答
0
投票

你可以这样写:

function yformatter(yi)
    yi < 1.0 && return string(yi)
    yi <= 10 && return string(round(Int,yi))
    nums = [['¹','²','³'] ; '⁴':'⁹']
    return "10$(nums[round(Int,log10(yi))])"
end

现在你有:

julia> yformatter.([0.1, 1, 10, 100, 1_000, 10_000, 100_000])
7-element Vector{String}:
 "0.1"
 "1"
 "10"
 "10²"
 "10³"
 "10⁴"
 "10⁵"
© www.soinside.com 2019 - 2024. All rights reserved.