Задать 2 графика с одной координатной осью в c# Chart
Очень нужна помощь с Chart Проблема в том, что мне надо в одной Chart Area разместить 2 графика, с одной координатной осью. Если чуть подробнее, ChartArea у меня задается с помощью DataTable и по ней строится свечной график. Потом я добавил Series и туда хочу добавить график(ломанную линию). Но мне не удается корректно его накладывать, т.к точки в Series накладываются независимо от оси OX по которой строятся свечи
Тут я задаю БД, по которой все будет строиться:
void dtinit()
{
DataColumn coloumn = new DataColumn();
coloumn.DataType = System.Type.GetType("System.Double");
coloumn.ColumnName = "Open";
table.Columns.Add(coloumn);
coloumn = new DataColumn();
coloumn.DataType = System.Type.GetType("System.Double");
coloumn.ColumnName = "Close";
table.Columns.Add(coloumn);
coloumn = new DataColumn();
coloumn.DataType = System.Type.GetType("System.Double");
coloumn.ColumnName = "High";
table.Columns.Add(coloumn);
coloumn = new DataColumn();
coloumn.DataType = System.Type.GetType("System.Double");
coloumn.ColumnName = "Low";
table.Columns.Add(coloumn);
coloumn = new DataColumn();
coloumn.DataType = System.Type.GetType("System.String");
coloumn.ColumnName = "Time";
table.Columns.Add(coloumn);
chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineWidth = 0;
chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineWidth = 0;
chart1.ChartAreas["ChartArea1"].AxisY.Maximum = 10 ^ 9;
chart1.ChartAreas["ChartArea1"].AxisY.Minimum = 0;
chart1.Series["Daily"].XValueMember = "Time";
chart1.Series["Daily"].YValueMembers = "High,Low,Open,Close";
chart1.Series["Daily"].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Date;
chart1.Series["Daily"].CustomProperties = "PriceDownColor=Red,PriceUpColor=Green";
//chart1.Series["Daily"]["OpenCloseStyle"] = "Triangle";
chart1.Series["Daily"]["ShowOpenClose"] = "Both";
chart1.DataManipulator.IsStartFromFirst = true;
chart1.DataSource = table;
chart1.DataBind();
}
Тут я задаю ломанную линию:
void ZigZag()
{
double min0 = Convert.ToDouble(table.Rows[0]["Open"]);
double max0 = Convert.ToDouble(table.Rows[0]["Close"]);
int minIndex = 0;
int maxIndex = 0;
chart1.BeginInvoke((MethodInvoker)(() => chart1.Series[1].Points.Clear()));
for (int i = 0; i < candleCount; i++)
{
double thisHigh = Convert.ToDouble(table.Rows[i]["High"]);
double thisLow = Convert.ToDouble(table.Rows[i]["Low"]);
double thisOpen = Convert.ToDouble(table.Rows[i]["Open"]);
double thisClose = Convert.ToDouble(table.Rows[i]["Close"]);
string thisTime = table.Rows[i]["Time"].ToString();
double thisOutput;
if (thisOpen > thisClose) { thisOutput = thisHigh; }
else { thisOutput = thisLow; }
if (thisClose > max0)
{
chart1.BeginInvoke((MethodInvoker)(() => chart1.Series["ZigZag"].Points.AddXY(thisTime, thisOutput)));
}
}
}