[MSChart] 自定Y軸格線不定比率的等份

MS Chart Control的Y軸格線比率可以設AxisY.Interval的方式去定義每個格線的距離,但它是等比例的格線,如果要自訂格線位置,有另一種變通的方法.

MS Chart Control的Y軸格線比率可以設AxisY.Interval的方式去定義每個格線的距離,但它是等比例的格線,如果要自訂格線位置,有另一種變通的方法.

 

今天欲做到的效果如下圖所示:

0~20 / 21~60 / 61~80 / 81~100 分為四等份.

image

因為原本的GridLine無法做這種不等比例的格線,所以就把它給Disable.並把Y軸數字給Hide起來.

chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;

chart1.ChartAreas[0].AxisY.MajorTickMark.Enabled = false;

chart1.ChartAreas[0].AxisY.LabelStyle.ForeColor = System.Drawing.Color.Transparent; //這個只有第二種顯示方式才需要,第一種會直接蓋掉

chart1.ChartAreas[0].AxisY.Maximum = 100;

 

格線跟Y軸數字都拿掉後,圖表就像下例的樣子.

image

接下來把左邊Y軸的標題用CustomLabel取代.

chart1.ChartAreas[0].AxisY.CustomLabels.Add(0, 20, "0~20");

chart1.ChartAreas[0].AxisY.CustomLabels.Add(21, 60, "21~60");

chart1.ChartAreas[0].AxisY.CustomLabels.Add(61, 80, "61~80");

chart1.ChartAreas[0].AxisY.CustomLabels.Add(81, 100, "81~100");

第一個參數是開始位置,第二個參數為結束位置,第三個參數為顯示文字,所以執行後如下.

image

當然我們也可以換個方式顯示這個CustomLabel.

CustomLabel cl1 = new CustomLabel(0, 20, "0~20", 1, LabelMarkStyle.Box);

//參數依序為(開始位置,結束位置,顯示文字,位置Index(0就是靠近Y軸,數字愈大就往左移),顯示方式)

cl1.ForeColor = Color.Black;

chart1.ChartAreas[0].AxisY.CustomLabels.Add(cl1);


image

 

 

 

接下來再用StripLine的方式把格線給加上去.

StripLine sl1 = new StripLine();

sl1.BackColor = System.Drawing.Color.Black; //格線黑色

sl1.IntervalOffset = 20;//顯示在Y軸值=20的地方

sl1.StripWidth = 1;//線寬

chart1.ChartAreas[0].AxisY.StripLines.Add(sl1);//把它加到AxisY裡去

 

StripLine sl2 = new StripLine();

sl2.BackColor = System.Drawing.Color.Black; //格線黑色

sl2.IntervalOffset = 60;//顯示在Y軸值=60的地方

sl2.StripWidth = 1;//線寬

chart1.ChartAreas[0].AxisY.StripLines.Add(sl2);//把它加到AxisY裡去

其它依此類推,這樣的顯示結果就會變為下面圖例:

image

 

以上就是自行加入不定比例的Y軸格線方式,如果有其它方式,歡迎各位的交流~

 

原始碼 : MSChartDemo.zip