2013-10-02 5 views
5

मेरे पास बार बार ग्राफ है जो लोगों की संख्या दर्शाता है। जब केवल कुछ लोग होते हैं तो वाई-अक्ष मूल्य दिखाता है: 0.5, 1, 1.5 आदि ... यह थोड़े मूर्ख दिखता है।एक्सिसि लेबल में केवल पूर्णांक प्रदर्शित करें?

  • मैं 1 (AxisY.LabelStyle.Interval = 1) के अंतराल ओवरराइड कर सकते हैं, लेकिन यह काम नहीं करता है, तो वहाँ 100 लोगों
  • मैं AxisY.Maximum = 10 सेट कर सकते हैं, लेकिन यह है कि 100 लोगों के साथ काम नहीं करता है
  • मैं AxisY.LabelStyle.Format = {#} सेट कर सकते हैं, लेकिन यह पता चलता है [1,1,2,2] के रूप में यह राउंड प्रत्येक लेबल

मुझे लगता है मैं पहले दो विकल्पों dyn के दोनों में से किसी का उपयोग कर सकते आम तौर पर सामग्री के अनुसार, लेकिन आश्चर्य हुआ कि क्या लेबल "केवल पूर्णांक" बनाने का एक स्वचालित तरीका है?

+0

मुझे यह समस्या भी है, अच्छा सवाल है। –

+0

एक न्यूनतम अंतराल संपत्ति की आवश्यकता है लेकिन ऐसा कोई चीज नहीं है। – Rakhitha

उत्तर

0

आप एक ही धुरी पर छोटे और बड़े दोनों संख्या को दिखाने के लिए पैमाने को तोड़ने का उपयोग कर सकते हैं:

// Enable scale breaks 
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.Enabled = true; 
// Set the scale break type 
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.BreakLineStyle = BreakLineStyle.Wave; 
// Set the spacing gap between the lines of the scale break (as a percentage of y-axis) 
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.Spacing = 2; 
// Set the line width of the scale break 
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.LineWidth = 2; 
// Set the color of the scale break 
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.LineColor = Color.Red; 
// Show scale break if more than 25% of the chart is empty space 
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.CollapsibleSpaceThreshold = 25; 
// If all data points are significantly far from zero, 
// the Chart will calculate the scale minimum value 
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.IsStartedFromZero = AutoBool.Auto; 

इस कोड नमूना सीधे the mschart samples से बाहर खींच लिया जाता है, जो एक चाहिए डाउनलोड कर रहे हैं यदि आप के साथ काम चार्टिंग नियंत्रण।

+0

यह आवश्यक नहीं है। समस्या यह है कि कोई न्यूनतम अंतराल संपत्ति नहीं है। आदर्श रूप से आवश्यक है कि न्यूनतम अंतराल को 1 तक सेट करने की क्षमता हो ताकि स्वचालित लेबल/टिक/ग्रिड पीढ़ी कभी भी आंशिक मान उत्पन्न न करे। – Rakhitha

0

कस्टमाइज़ ईवेंट के बाद चाल चलती है। मैं मूल रूप से उन लेबलों का पता लगाने के लिए एक नियमित अभिव्यक्ति का उपयोग कर रहा हूं जो पूरी संख्या नहीं हैं और फिर उन्हें हटा दें। लेकिन 1 से अंतराल को सेट करने से आप परेशानी पैदा कर सकते हैं जब तक कि आप इसे बाद में ऑटो पर वापस नहीं डाल देते।

यह कोड धुरी अंतराल संपत्ति को बदलने के परिणामस्वरूप मेरे मामले में समस्या का समाधान नहीं करता है। कृपया सुझाव दें कि किसी के पास वैकल्पिक सुझाव है या नहीं।

private void Chart_Customize(object sender, EventArgs e) 
    { 
     List<CustomLabel> list = new List<CustomLabel>(); 
     System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("^\\d+$"); 

     foreach (CustomLabel l in chart.ChartAreas[0].AxisY.CustomLabels) 
     { 
      if(!r.IsMatch(l.Text)) 
      { 
       list.Add(l); 
      } 
     } 

     if (list.Count > 0) 
     { 
      foreach (CustomLabel l in list) 
       chart.ChartAreas[0].AxisY.CustomLabels.Remove(l); 
      chart.ChartAreas[0].AxisY.Interval = 1; 

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