Peter Staab Asked: 2024-06-10 19:22:18 +0800 CST2024-06-10 19:22:18 +0800 CST 2024-06-10 19:22:18 +0800 CST Makie 轴的自定义标签 772 我正在尝试移动 Makie 图中的一些数据(我使用的是网格散射,但有一个更简单的示例)。 如果 fig = Figure() Axis(fig[1,1], xticks = 0:10:60, xtickformat = x -> string.(x .+70), yticks = 0:10:60, ytickformat = x -> string.(x .+70), limits = (0,60,0,60) ) fig 我得到每个标签末尾带有“.0”的格式,但不想要它们。 从文档看来,它通过命令运行来自动添加“.0”。 julia 1 个回答 Voted Best Answer PaSTE 2024-06-11T03:35:09+08:002024-06-11T03:35:09+08:00 默认情况下,Makie 中沿线轴的刻度值的类型为Float64。在代码中找到发生这种情况的位置有点复杂,但是您可以在创建为 的函数LineAxis的定义中看到,并且这个值向量最终传递给 中定义的函数。即使您将其定义为,情况也是如此。tickvaluesObservable{Vector{Float64}}Float64xtickformatxticksStepRange{Int64, Int64} 强制将刻度显示为整数的最简单方法是xtickformat像将传递给函数的值转换Int为字符串之前一样将其转换为字符串: fig = Figure() Axis(fig[1,1]; xticks = 0:10:60, xtickformat = (x -> @. string(Int(x) + 70)), limits = (0, 60, 0, 1), ) xtick仅当所有值都可以转换为值时,这才有效Int,否则,会发生这种情况: Axis(fig[1,1]; xticks = 0:1.5:6, xtickformat = (x -> @. string(Int(x) + 70)), limits = (0, 6, 0, 1), ) # ERROR: InexactError: Int64(1.5) 您还可以将 a 传递String给xtickformat,它将被解释为 的格式说明符Format.jl,如文档中所述。没有小数值的浮点数的格式说明符是{:.0f},它会产生以下结果: Axis(fig[2,1]; xticks = 0:10:60, xtickformat = "{:.0f}", xticklabelcolor = :purple, limits = (0, 60, 0, 1), ) 当刻度值不是整数时,使用此格式说明符也有效,但结果将被四舍五入,可能不是您所期望的: Axis(fig[3,1]; xticks = 0:1.5:6, xtickformat = "{:.0f}", xticklabelcolor = :orange, limits = (0, 6, 0, 1), )
默认情况下,Makie 中沿线轴的刻度值的类型为
Float64
。在代码中找到发生这种情况的位置有点复杂,但是您可以在创建为 的函数LineAxis
的定义中看到,并且这个值向量最终传递给 中定义的函数。即使您将其定义为,情况也是如此。tickvalues
Observable{Vector{Float64}}
Float64
xtickformat
xticks
StepRange{Int64, Int64}
强制将刻度显示为整数的最简单方法是
xtickformat
像将传递给函数的值转换Int
为字符串之前一样将其转换为字符串:xtick
仅当所有值都可以转换为值时,这才有效Int
,否则,会发生这种情况:您还可以将 a 传递
String
给xtickformat
,它将被解释为 的格式说明符Format.jl
,如文档中所述。没有小数值的浮点数的格式说明符是{:.0f}
,它会产生以下结果:当刻度值不是整数时,使用此格式说明符也有效,但结果将被四舍五入,可能不是您所期望的: