Tengo un gráfico con múltiples áreas de gráfico. Cuando presiono un botón, se crea una nueva área de gráfico, etc. Mi problema es que después de agregar algunas áreas de gráfico, obtengo el siguiente resultado:
Quiero tener cada área del gráfico en una sola columna, una tras otra de esta manera: 
es posible ?
EDITAR: agregar áreas de gráfico dinámicamente 
a la izquierda está el gráfico con 3 áreas de gráfico añadidas ya la derecha está el gráfico con 4 áreas.
Utilice la propiedad ChartArea.AlignWithChartArea
Mediante el uso de las propiedades AlignWithChartArea, AlignmentOrientation y AlignmentStyle, es posible alinear o sincronizar dos o más áreas de gráfico horizontalmente, verticalmente o ambas.
Primero, establezca la propiedad AlignWithChartArea en el nombre de un objeto ChartArea. Luego, esta área del gráfico se alineará, según la configuración de AlignmentStyle, que define la alineación que se utilizará, y la configuración de AlignmentOrientation, que define los elementos del área del gráfico que se deben usar para establecer la alineación.
Entonces, para poner ChartArea2 debajo de ChartArea1:
ChartArea2.AlignWithChartArea1; ChartArea2.AlignmentStyle = AreaAlignmentStyles.Position; ChartArea2.AlignmentOrientation = AreaAlignmentOrientation.Vertical;Así es como puede lograr lo que necesita, también refiriéndose a su pregunta aquí:
https://stackoverflow.com/questions/67124754/dynamically-add-chart-areas-in-vertical-alignment
Use la propiedad Position y lea los comentarios dentro del código:
private void button1_Click(object sender, EventArgs e) { List<ChartArea> Areas = new List<ChartArea>(); int numberOfAreas = 5; chart1.Legends[0].Enabled = false; for (int k = 1; k <= numberOfAreas; k++) // YOU WANT 5 and not 4 AREAS - changed k< to k<= { var S1 = new Series(); chart1.Series.Add(S1); S1.Name = k.ToString(); for (int j = 0; j < 100; j += 10) S1.Points.AddXY(j, j / 10); S1.Color = Color.Transparent; Areas.Add(new ChartArea(k.ToString())); chart1.ChartAreas.Add(Areas[k - 1]); // IT IS k-1 and not k - we start counting from 0 S1.ChartArea = k.ToString(); chart1.ChartAreas[k - 1].AlignWithChartArea = chart1.ChartAreas[k - 1].Name; chart1.ChartAreas[k - 1].AlignmentStyle = AreaAlignmentStyles.Position; chart1.ChartAreas[k - 1].AlignmentOrientation = AreaAlignmentOrientations.Vertical; } // NOW THE IMPORTANT PART float currentHeight = 0; foreach (var itm in Areas) { itm.Position.Height = 100 / numberOfAreas; // Note: the valus are in percenteges and not absolute pixels itm.Position.Y = currentHeight; itm.Position.X = 5; itm.Position.Width = 95; currentHeight += 100 / numberOfAreas; } }