Mma v7中添加了FindDivisions[ ],这似乎是一种获取情节灵活变动的好方法。例如,参见this question及其答案。

用法示例:

f[fd_] := Join[
   {#, #, {.07, 0}, Directive[Black, Thickness[.01]]} & /@ fd[[1]],
   {#, #, {.05, 0}, Directive[Black, Thin]}           & /@ Flatten[fd[[2]]]];
plot[pr_List] :=
     Plot[Sin[x], Evaluate@Join[{x}, pr], Ticks -> {f[FindDivisions[pr, {2,5}]]}]

plot[{0, 10}]

一切似乎都正确。
但是有一个小故障:
f[fd_] := Join[
   {#, #, {.03, 0}, Directive[Red, Thickness[.01]]} & /@  fd[[1]],
   {#, #, {.05, 0}, Directive[Black, Thin]}         & /@  Flatten[fd[[2]]]];
plot[pr_List] :=
  Plot[Sin[x], Evaluate@Join[{x}, pr], Ticks -> {f[FindDivisions[pr, {2,5}]]}]
plot[{0, 10}]

如您所见,红色和黑色刻度线是叠加的。那是因为
FindDivisions[{0, 2}, {2, 4}]
(*
-> {{0, 1, 2}, {{0, 1/4, 1/2, 3/4, 1}, {1, 5/4, 3/2, 7/4, 2}}}
*)

并且您可以看到第二个列表中重复了第一个列表中的数字(主刻度)。
但是,FindDivisions []文档指出:

因此,有两个问题:
  • 这是错误,还是我在做(或理解)错了?
  • 有什么简单的方法可以删除多级结构中的重复刻度?
  • 最佳答案

    这是一个错误,可能在实现中,尽管有时会有重复的值可能很有用。 (这对于构造不同级别的划分当然很有用。)

    对于壁虱,我可能会使用类似以下的代码:

    {major, minor} = FindDivisions[{0, 2}, {2, 4}];
    minor = Complement[Flatten[minor], major];
    

    展平层次结构并删除重复项。

    广义的,不只是两个级别:
    divs = Flatten /@ FindDivisions[{0, 2}, {2, 4, 2}];
    Complement[#2, #1] & @@@ Partition[divs, 2, 1, -1, {{}}]
    

    关于wolfram-mathematica - FindDivisions []无法按规定工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6373940/

    10-11 21:35