2011-06-16 17 views
6

FindDivisions[ ] एमएमए v7 में जोड़ा गया था, और प्लॉट्स के लिए लचीली टिक प्राप्त करने का एक अच्छा तरीका प्रतीत होता है। उदाहरण के लिए this question और इसके उत्तर देखें।FindDivisions [] बताए गए अनुसार

प्रयोग उदाहरण:

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], [email protected][{x}, pr], Ticks -> {f[FindDivisions[pr, {2,5}]]}] 

plot[{0, 10}] 

enter image description here

और सब कुछ ठीक लगता है।
लेकिन वहाँ एक गड़बड़ है:

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], [email protected][{x}, pr], Ticks -> {f[FindDivisions[pr, {2,5}]]}] 
plot[{0, 10}] 

enter image description here

आप देख सकते हैं, लाल और काले रंग टिक आरोपित कर रहे हैं। ऐसा इसलिए है क्योंकि

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 [] प्रलेखन राज्यों:

enter image description here

तो, दो सवाल:

  1. यह एक बग है, या मैं कर रहा हूँ (या समझ) कुछ गलत?
  2. कोई आसान एक बहुस्तरीय संरचना में दोहराए गए टिक को हटाने के तरीके?

उत्तर

5

यह एक बग है, शायद कार्यान्वयन में, हालांकि डुप्लिकेट मान कभी-कभी उपयोगी हो सकते हैं। (यह निश्चित रूप से डिवीजनों के विभिन्न स्तरों के निर्माण के लिए उपयोगी है।)

टिक के लिए, मैं शायद की तरह कोड का उपयोग करेंगे: पदानुक्रम समतल और डुप्लिकेट को दूर करने के

{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, {{}}] 
+0

धन्यवाद @Brett। यह 'FindDivisions [{0, 2}, {2, 4, 2}]' के लिए कैसे काम करता है? –

+0

उत्तर अपडेट किया गया, हालांकि मुझे इस मामले में तीसरे स्तर के लिए मिले डिवीजनों की परवाह नहीं है ... –

+0

लगता है कि 'FindDivisions [{0, 1}, {3, 3, 3}] 'मान के साथ तीसरी सूची में '1/2' दोहराया जाता है –

संबंधित मुद्दे