P: Tengo datos en 8 categorías y 3 valores distintos para cada uno. Quiero mostrar a estas categorías en un gráfico apilado con el nombre de cada categoría como una etiqueta, pero no sé cómo hacerlo.
R: Lo que quiere mostrar puede ser hecho añadiendo 3 BarSeries al control de gráficos de barra. Luego puede enlazar las propiedades XDataPath o YDataPath de cada serie al campo apropiado en su fuente de datos. Establezca el tipo de barra a ser apilada.
Aquí está cómo construir un gráfico de columna apilado:
//the first series is predefined BarSeries series1 = barChart1.Series[0] as BarSeries; series1.YDataPath = "EuropeSales"; series1.XData = indexes; series1.BarType = BarType.VerticalStack; BarSeries series2 = new BarSeries(); series2.YDataPath = "AsiaSales"; series2.XData = indexes; barChart1.Series.Add(series2); series2.BarType = BarType.VerticalStack; BarSeries series3 = new BarSeries(); series3.YDataPath = "USASales"; series3.XData = indexes; barChart1.Series.Add(series3); series3.BarType = BarType.VerticalStack;
Aquí está una lista de ejemplo con los datos usados para enlazar el gráfico:
var salesList = new List() { new Sales(){Category="apples", EuropeSales=34, AsiaSales=12, USASales=24}, new Sales(){Category="oranges", EuropeSales=23, AsiaSales=17, USASales=10}, new Sales(){Category="bananas", EuropeSales=4, AsiaSales=31, USASales=27}, new Sales(){Category="cherries", EuropeSales=8, AsiaSales=9, USASales=30} };
Asignamos la fuente de datos y establecemos el tipo de etiquetas para el eje X como texto personalizado. La propiedad XLabelPath establece el nombre del campo que proporciona las etiquetas personalizadas:
barChart1.DataSource = salesList; barChart1.XAxisSettings.LabelType = LabelType.CustomText; barChart1.XLabelPath = "Category";