2011-07-21 11 views
5

में प्रमुख अक्ष अंकों के दिए गए नंबरों का उपयोग करने के लिए फोर्स अक्ष को Visiblox चार्ट में वाई अक्ष के लिए रैखिकएक्सिस का उपयोग करते समय, मैं अक्ष को बलकिट रखने के दौरान किसी भी प्रमुख टिक अंकों का उपयोग करने के लिए मजबूर करना चाहता हूं स्वचालित रूप से धुरी रेंज की गणना करें और निशान स्थानों पर टिकटें। उदाहरण के लिए, मेरे पास प्राथमिक और द्वितीयक वाई धुरी हो सकती है और मैं चाहता हूं कि दोनों कुल्हाड़ी बड़ी संख्या में प्रमुख टिकों का उपयोग करें ताकि उनकी क्षैतिज ग्रिडलाइन ओवरलैप हो। क्या यह संभव है?Visibox चार्ट

उत्तर

4

कुछ विकल्प हैं। सबसे पहले आप प्रमुख टिकों के वितरण को मजबूर करने के लिए MajorTickInterval सेट कर सकते हैं। आपके उपयोग-मामले के आधार पर आपको धुरी की वास्तविक सीमा को देखने की आवश्यकता हो सकती है, और उन टिकों की संख्या से विभाजित होना चाहिए जिन्हें आप एक समझदार अंतराल प्राप्त करना चाहते हैं।

दूसरा विकल्प धुरी को उपclass करना है और GetMajorTickValues ​​विधि को ओवरराइड करना है, जो अक्ष को यह निर्धारित करने के लिए उपयोग करता है कि टिक कहां रखना है।

4

यदि आपको अपने प्राथमिक और माध्यमिक अक्ष पर मूल्यों के बीच संबंध लागू करने की आवश्यकता है, तो इसे ElementName बाइंडिंग के माध्यम से हासिल किया जा सकता है। उदाहरण के लिए, आप माध्यमिक अक्ष MajorTickInterval प्राथमिक अक्ष की गणना की टिक अंतराल के लिए, इस प्रकार बाध्य कर सकते हैं ActualMajorTickInterval:

<Grid x:Name="LayoutRoot" Background="White"> 
    <vis:Chart x:Name="chart"> 
    <vis:Chart.YAxis> 
     <vis:LinearAxis x:Name="primaryAxis"/> 
    </vis:Chart.YAxis> 
    <vis:Chart.SecondaryYAxis> 
     <vis:LinearAxis MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/> 
    </vis:Chart.SecondaryYAxis> 
    </vis:Chart> 
</Grid> 

हालांकि, अपने डेटा के आधार आयन, प्रत्येक अक्ष का कारण नहीं है के लिए एक ही टिक अंतराल होने अपने मेल खाने के लिए प्रमुख टिक ग्रिडलाइन। इस मामले में, आप सीमा वरना बाध्य करने के लिए चाहते हो सकता है:

<Grid x:Name="LayoutRoot" Background="White"> 
    <vis:Chart x:Name="chart"> 
    <vis:Chart.YAxis> 
     <vis:LinearAxis x:Name="primaryAxis"/> 
    </vis:Chart.YAxis> 
    <vis:Chart.SecondaryYAxis> 
     <vis:LinearAxis Range="{Binding ElementName=primaryAxis, Path=ActualRange}" 
         MajorTickInterval="{Binding ElementName=primaryAxis, Path=ActualMajorTickInterval}"/> 
    </vis:Chart.SecondaryYAxis> 
    </vis:Chart> 
</Grid> 

आप और अधिक जटिल तर्क जरूरत है, यह मूल्य कन्वर्टर्स के माध्यम से ऐसा करना संभव हो सकता है।

+0

उदाहरण के लिए धन्यवाद, हालांकि, यह काफी नहीं है जो मैं सोच रहा था। मेरी स्थिति में, यह हो सकता है कि एक अक्ष पर डेटा 0 से 1 तक और दूसरी तरफ 10,000 से 15,000 तक हो। लक्ष्य तब पूर्ण टिक अंतराल या श्रेणियों पर बाध्यकारी नहीं है, बल्कि केवल द्वितीयक धुरी को इस शर्त के साथ टिक्स का एक अच्छा सेट खींचने के लिए मजबूर करना है कि किसी भी प्रकार की टिकों का उपयोग किया जाए। मैं डिफॉल्ट रेंज भी नहीं ले सकता और मुझे इच्छित टिकों की संख्या से विभाजित कर सकता है, क्योंकि तब टिक स्थान "सुंदर" नहीं हो सकते हैं। शायद टिक पोजिशनिंग एल्गोरिदम को फिर से लिखना एकमात्र तरीका है। – Abiel

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