public void CreateChart(Grid oGrid, ObservableCollection<ListItem> lBaseOilBar) { foreach (ListItem li in lBaseOilBar) { //图表大小,框线 Chart chart = new MyCharts(); chart.Width = 800; chart.Height = 600; chart.ScrollingEnabled = false; //图表标题 Title title = new Title(); string sTitle = li.Title; title.Text = sTitle; title.FontSize = 16; chart.Titles.Add(title); // X 坐标轴 Axis axisX = new Axis(); AxisLabels xal = new AxisLabels { FontSize = 14//设置文字大小 }; axisX.AxisLabels = xal; chart.AxesX.Add(axisX); // Y 坐标轴 Axis axisY = new Axis(); AxisLabels yal = new AxisLabels { FontSize = 14//设置文字大小 }; axisY.AxisLabels = yal; //Y轴数据单位 string sYUint = li.YUint; axisY.Title = sYUint; axisY.TitleFontSize = 15; chart.AxesY.Add(axisY); if (li.ChartType == "Column") //柱状图 { switch (li.YAXISs.Count()) { case 1: chart.DataPointWidth = 4;//设置柱子宽度 break; case 2: chart.DataPointWidth = 2.5; break; case 3: chart.DataPointWidth = 1.8; break; } } title.MouseLeftButtonDown += new MouseButtonEventHandler(title_MouseLeftButtonDown);
////设置图标字体大小 //Legend legend = new Legend(); //legend.FontSize = 13; //chart.Legends.Add(legend);1
//X轴数据 string[] sXLabel = li.XAXIS.ToArray(); string sTableName = ""; #region 点击是否触发事件,钻取数据图表赋值一个物理表名 bool ifGetSig = false; switch (li.ChartName) { case "Stock": sTableName = "StockSingleOildom"; ifGetSig = true; break; case "Drill_JC": sTableName = "Drill_JCSingleOildom"; ifGetSig = true; break; case "EXTRACTIONOIL": sTableName = "EXTRACTIONOILSingleOildom"; ifGetSig = true; break; case "Drill_MACHINE": sTableName = "Drill_MACHINESingleOildom"; ifGetSig = true; break; case "PROVEDRILL": sTableName = "PROVEDRILLSingleOildom"; ifGetSig = true; break; } #endregion #region 图表柱状个数,循环加载数据 ColorSet cs = new ColorSet(); cs.Id = "colorset1"; // 设置ColorSet 的 Id 为 colorset1 //foreach (YAXIS oYAXIS in li.YAXISs) for (int j = 0; j < li.YAXISs.Count(); j++) { YAXIS oYAXIS = (YAXIS)li.YAXISs[j]; string sYTitle = ""; sYTitle = oYAXIS.Name; double[] dYValue = null; dYValue = oYAXIS.YValue.ToArray(); DataSeries dataSeries = new DataSeries(); dataSeries.LegendText = sYTitle; #region 双坐标轴 string IsTwoY = ""; IsTwoY = oYAXIS.TWOY; if (IsTwoY == "true") { Axis axisYT = new Axis() { AxisType = AxisTypes.Secondary }; AxisLabels yalT = new AxisLabels { //Enabled = true, //设置是否显示坐标轴上的文本,默认值为true //Angle = 45,//设置文本显示的角度,取值为 –90 至 90 FontSize = 14//设置文字大小 }; axisYT.AxisLabels = yalT; axisYT.AxisMinimum = 0; axisYT.AxisMaximum = 100; //Y轴数据单位 string sYUintT = li.YUintT; axisYT.Title = sYUintT; axisYT.TitleFontSize = 15; chart.AxesY.Add(axisYT); dataSeries.AxisYType = AxisTypes.Secondary; } #endregion else { dataSeries.AxisYType = AxisTypes.Primary; } #region 设置柱状图的颜色 待开发 //ColorSet cs = new ColorSet(); //string strColor = oYAXIS.Color; //////Colors oColors = new Colors(); //cs.Id = "colorset1"; // 设置ColorSet 的 Id 为 colorset1 //cs.Brushes.Add(new SolidColorBrush(Colors.Green)); //cs.Brushes.Add(new SolidColorBrush(Colors.Red)); //cs.Brushes.Add(new SolidColorBrush(Colors.Blue)); ////cs.Brushes.Add(new SolidColorBrush(Colors.Yellow)); ////cs.Brushes.Add(new SolidColorBrush(Colors.Orange)); //chart.ColorSets.Add(cs); //chart.ColorSet = "colorset1"; // 设置 Chart 使用自定义的颜色集合 colorset1 string strColor = oYAXIS.Color; switch (strColor) { case "Red": cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0xff, 0x45, 0x00))); //#FFFF4500 orangeRed break; case "Yellow": cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0xda, 0xa5, 0x20)));//FFDAA520 Goldenrod break; case "Orange": cs.Brushes.Add(new SolidColorBrush(Colors.Orange)); break; case "Green": cs.Brushes.Add(new SolidColorBrush(Colors.Green)); break; case "Blue": cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0x41, 0x69, 0xe1))); //FF4169E1 RoyalBlue break; default: break; } #endregion #region 图表类型(柱状,饼状……) string sChartType = li.ChartType; RenderAs oRenderAs = new RenderAs(); switch (sChartType) { case "Column": oRenderAs = RenderAs.Column; break; case "Pie": oRenderAs = RenderAs.Pie; //dataSeries.LabelFontSize = 14;//设置图标字体大小 break; case "Line": oRenderAs = RenderAs.Line; break; } dataSeries.RenderAs = oRenderAs; #endregion #region 构造数据 DataPoint dp; if (sXLabel != null) { for (int i = 0; i < sXLabel.Length; i++) { dp = new DataPoint(); dp.AxisXLabel = sXLabel[i]; dp.YValue = dYValue[i]; if (ifGetSig) { dp.Tag = sTableName; //dp.MouseLeftButtonUp += new MouseButtonEventHandler(dataPoint_MouseLeftButtonUp); } //饼状图去除值为0的oildom if ((dataSeries.RenderAs == RenderAs.Pie || dataSeries.RenderAs == RenderAs.Line) && dp.YValue == 0) {
}
else { dataSeries.DataPoints.Add(dp); } } } #endregion chart.Series.Add(dataSeries); } // 设置 Chart 使用自定义的颜色集合 colorset1 if (cs.Brushes.Count > 0) { chart.ColorSets.Clear(); chart.ColorSets.Add(cs); chart.ColorSet = "colorset1"; } #endregion oGrid.Children.Add(chart); } }
visifire 图表双坐标轴 silverlight,码迷,mamicode.com
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)