在 pgfplots 中自动设置刻度精度的最佳方法?

在 pgfplots 中自动设置刻度精度的最佳方法?

我知道我可以像这样手动设置精度:

x tick label style = {/pgf/number format/fixed, /pgf/number format/fixed zerofill, /pgf/number format/precision = 2},
y tick label style = {/pgf/number format/fixed, /pgf/number format/fixed zerofill, /pgf/number format/precision = 4},
scaled y ticks=false,

但是有没有办法计算并一致地设置精度?我使用 Python 生成 LaTeX 代码,因此我不想手动设置每个图的精度,这些图是在多个数据集上循环生成的,不同的数据集需要不同的精度

编辑 1:这是一个示例页面,其中的图表的 Y 轴精度根据给定的数据而变化:
Y 轴上可变精度的示例

编辑2:我发布了一个似乎可以完成这项工作的答案,但我还没有对它进行广泛的测试

答案1

我找到了一种使用 Python 根据给定数据计算精度的方法:

precision, max_precision = 0, 6
for p in range(max_precision):
    if np.max(data) < (3/2)*10**-p:
        precision += 1

y_tick_label_style = f"y tick label style = {{/pgf/number format/fixed, /pgf/number format/fixed zerofill, /pgf/number format/precision = {precision}}},"

我相信尾数(此处为 3/2)取决于pgfplots设置,对于示例图而言设置如下:

\pgfplotsset{compat = 1.18, try min ticks = 2, max space between ticks = 50pt}

相关内容