我知道我可以像这样手动设置精度:
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 轴精度根据给定的数据而变化:
编辑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}