visifire 图表双坐标轴 silverlight
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);
}
}