C1BarChart 是 Wijmo 使用频率最高的控件之一。除了它丰富的服务端接口外,它还提供了灵活的前台接口。典型的应用场景是,当系列被添加到 C1BarChart,X 和 Y 轴会自动根据数值展示数据。而有时我们需要在数据条基础上进行定制,例如标签或者条形图颜色。
在本篇文章中,我们将使用 ValueLabels 类来实现标签的定制。最终实现效果如图:
添加两个系列到 C1BarChart
我们创建两个系列,按月份来显示数据。首先我们需要设置这两个系列的数据。代码如下:
#region Series Additiondouble[] unitsSold = new double[12];double[] month = new double[12];//populate the arrayint i = 0;for (i = 0; i < 12; i++){unitsSold<em class="bbcode-em"></em> = i;month<em class="bbcode-em"></em> = i * i;}//create an object of chart series and add dataBarChartSeries bcs = new BarChartSeries();bcs.Data.X.AddRange(unitsSold);bcs.Data.Y.AddRange(month);bcs.Label = "FY2009 ACTUAL";//add the first seriesC1BarChart1.SeriesList.Add(bcs);double[] unitsSold1 = new double[12];double[] month1 = new double[12];//populate the arrayint j = 0;int counter = 0;for (j = 12; j < 24; j++){unitsSold1[counter] = j;month1[counter] = counter * 2;counter++;}//create an object of chart series and add dataBarChartSeries bcs1 = new BarChartSeries();bcs1.Data.X.AddRange(unitsSold1);bcs1.Data.Y.AddRange(month1);bcs1.Label = "FY2010 ACTUAL";//add the second seriesC1BarChart1.SeriesList.Add(bcs1);#endregion
系列添加成功,接下来我们就进行标签的定制。由于 X 轴显示的是月份名称,我们将存储月份到数组中,我们将遍历数据并且设置给 X 轴标签。代码如下:
#region Adding Value Labels//array consisting names of the monthsstring[] monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames;//FOR THE FIRST SERIESfor (i = 0; i < monthNames.Length - 1; i++){//create object of ValueLabel classValueLabel vl = new ValueLabel();// set the x-axis value which you want to replacevl.NumericValue = i;// set the desired value which you want to showvl.Text = monthNames<em class="bbcode-em"></em>.Substring(0, 3);// add it to the ValueLabel collectionC1BarChart1.Axis.X.ValueLabelList.Add(vl);}//set the annotation to valuelabels instead of values.C1BarChart1.Axis.X.AnnoMethod = ChartAxisAnnoMethod.ValueLabels;//FOR THE SECOND SERIESfor (i = 0; i < monthNames.Length - 1; i++){//create object of ValueLabel classValueLabel vl = new ValueLabel();vl.NumericValue = i + 12;// set the desired value which you want to showvl.Text = monthNames<em class="bbcode-em"></em>.Substring(0, 3);// add it to the ValueLabel collectionC1BarChart1.Axis.X.ValueLabelList.Add(vl);}//set the annotation to valuelabels instead of values.C1BarChart1.Axis.X.AnnoMethod = ChartAxisAnnoMethod.ValueLabels;#endregion
以上即为定制X轴标签的方法,可以下载 demo 测试效果:
VS2012 + C# + Studio for ASP.NET Wijmo:
