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/