Cómo crear gráficos en una presentación
Soporte para código heredado
Para usar el código heredado desarrollado con Aspose.Slides para .NET versiones anteriores a 13.x, necesitas hacer algunos cambios menores en tu código y funcionará como antes. Todas las clases que estaban presentes en la antigua Aspose.Slides para .NET bajo los espacios de nombres Aspose.Slide y Aspose.Slides.Pptx ahora se han fusionado en un único espacio de nombres Aspose.Slides. Por favor, echa un vistazo al siguiente fragmento de código simple para crear un gráfico normal desde cero en una presentación utilizando la API heredada de Aspose.Slides y sigue los pasos que describen cómo migrar a la nueva API fusionada.
Enfoque heredado de Aspose.Slides para .NET
//Instanciar la clase PresentationEx que representa el archivo PPTX
using (PresentationEx pres = new PresentationEx())
{
//Acceder a la primera diapositiva
SlideEx sld = pres.Slides[0];
// Agregar gráfico con datos predeterminados
ChartEx chart = sld.Shapes.AddChart(ChartTypeEx.ClusteredColumn, 0, 0, 500, 500);
//Configurando el título del gráfico
chart.ChartTitle.Text.Text = "Título de muestra";
chart.ChartTitle.Text.CenterText = true;
chart.ChartTitle.Height = 20;
chart.HasTitle = true;
//Configurar la primera serie para mostrar valores
chart.ChartData.Series[0].Labels.ShowValue = true;
//Configurando el índice de la hoja de datos del gráfico
int defaultWorksheetIndex = 0;
//Obteniendo la hoja de datos del gráfico
ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;
//Eliminar series y categorías generadas por defecto
chart.ChartData.Series.Clear();
chart.ChartData.Categories.Clear();
int s = chart.ChartData.Series.Count;
s = chart.ChartData.Categories.Count;
//Añadir nuevas series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Serie 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Serie 2"), chart.Type);
//Añadir nuevas categorías
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Categoría 1"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Categoría 2"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Categoría 3"));
//Tomar la primera serie del gráfico
ChartSeriesEx series = chart.ChartData.Series[0];
//Ahora poblamos los datos de la serie
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, 20));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 50));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 1, 30));
//Configurando el color de relleno para la serie
series.Format.Fill.FillType = FillTypeEx.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Red;
//Tomar la segunda serie del gráfico
series = chart.ChartData.Series[1];
//Ahora poblamos los datos de la serie
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 2, 30));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 2, 10));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 2, 60));
//Configurando el color de relleno para la serie
series.Format.Fill.FillType = FillTypeEx.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Green;
//Crear etiquetas personalizadas para cada una de las categorías para nuevas series
//la primera etiqueta mostrará el nombre de la categoría
DataLabelEx lbl = new DataLabelEx(series);
lbl.ShowCategoryName = true;
lbl.Id = 0;
series.Labels.Add(lbl);
//Mostrar el nombre de la serie para la segunda etiqueta
lbl = new DataLabelEx(series);
lbl.ShowSeriesName = true;
lbl.Id = 1;
series.Labels.Add(lbl);
//Mostrar valor para la tercera etiqueta
lbl = new DataLabelEx(series);
lbl.ShowValue = true;
lbl.ShowSeriesName = true;
lbl.Separator = "/";
lbl.Id = 2;
series.Labels.Add(lbl);
//Mostrar valor y texto personalizado
lbl = new DataLabelEx(series);
lbl.TextFrame.Text = "Mi texto";
lbl.Id = 3;
series.Labels.Add(lbl);
//Guardar la presentación con el gráfico
pres.Write(@"D:\AsposeChart.pptx");
}
Nuevo enfoque de Aspose.Slides para .NET 13.x
//Instanciar la clase Presentation que representa el archivo PPTX
Presentation pres = new Presentation();
//Acceder a la primera diapositiva
ISlide sld = pres.Slides[0];
// Agregar gráfico con datos predeterminados
IChart chart = sld.Shapes.AddChart(ChartType.ClusteredColumn, 0, 0, 500, 500);
//Configurando el título del gráfico
//chart.ChartTitle.TextFrameForOverriding.Text = "Título de muestra";
chart.ChartTitle.AddTextFrameForOverriding("Título de muestra");
chart.ChartTitle.TextFrameForOverriding.TextFrameFormat.CenterText = NullableBool.True;
chart.ChartTitle.Height = 20;
chart.HasTitle = true;
//Establecer la primera serie para mostrar valores
chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;
//Configurando el índice de la hoja de datos del gráfico
int defaultWorksheetIndex = 0;
//Obteniendo la hoja de datos del gráfico
IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;
//Eliminar series y categorías generadas por defecto
chart.ChartData.Series.Clear();
chart.ChartData.Categories.Clear();
int s = chart.ChartData.Series.Count;
s = chart.ChartData.Categories.Count;
//Añadir nuevas series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Serie 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Serie 2"), chart.Type);
//Añadir nuevas categorías
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Categoría 1"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Categoría 2"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Categoría 3"));
//Tomar la primera serie del gráfico
IChartSeries series = chart.ChartData.Series[0];
//Ahora poblamos los datos de la serie
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 1, 20));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 50));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 1, 30));
//Configurando el color de relleno para la serie
series.Format.Fill.FillType = FillType.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Red;
//Tomar la segunda serie del gráfico
series = chart.ChartData.Series[1];
//Ahora poblamos los datos de la serie
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 2, 30));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 2, 10));
series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 2, 60));
//Configurando el color de relleno para la serie
series.Format.Fill.FillType = FillType.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Green;
//Crear etiquetas personalizadas para cada una de las categorías para nuevas series
//la primera etiqueta mostrará el nombre de la categoría
IDataLabel lbl = series.DataPoints[0].Label;
lbl.DataLabelFormat.ShowCategoryName = true;
lbl = series.DataPoints[1].Label;
lbl.DataLabelFormat.ShowSeriesName = true;
//Mostrar valor para la tercera etiqueta
lbl = series.DataPoints[2].Label;
lbl.DataLabelFormat.ShowValue = true;
lbl.DataLabelFormat.ShowSeriesName = true;
lbl.DataLabelFormat.Separator = "/";
//Guardar presentación con gráfico
pres.Save("AsposeChart.pptx", SaveFormat.Pptx);
Por favor, echa un vistazo al siguiente fragmento de código simple para crear un gráfico disperso desde cero en una presentación utilizando la API heredada de Aspose.Slides y cómo lograrlo con la nueva API fusionada.
Enfoque heredado de Aspose.Slides para .NET
using (PresentationEx pres = new PresentationEx())
{
SlideEx slide = pres.Slides[0];
//Creando el gráfico predeterminado
ChartEx chart = slide.Shapes.AddChart(ChartTypeEx.ScatterWithSmoothLines, 0, 0, 400, 400);
//Obteniendo el índice de la hoja de datos del gráfico predeterminado
int defaultWorksheetIndex = 0;
//Accediendo a la hoja de datos del gráfico
ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;
//Eliminar series de demostración
chart.ChartData.Series.Clear();
//Añadir nuevas series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, "Serie 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, "Serie 2"), chart.Type);
//Tomar la primera serie del gráfico
ChartSeriesEx series = chart.ChartData.Series[0];
//Añadir nuevo punto (1:3) allí.
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 1));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 2, 3));
//Añadir nuevo punto (2:10)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 1, 2));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 2, 10));
//Editar el tipo de serie
series.Type = ChartTypeEx.ScatterWithStraightLinesAndMarkers;
//Cambiar el marcador de la serie del gráfico
series.MarkerSize = 10;
series.MarkerSymbol = MarkerStyleTypeEx.Star;
//Tomar la segunda serie del gráfico
series = chart.ChartData.Series[1];
//Añadir nuevo punto (5:2) allí.
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 3, 5));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 4, 2));
//Añadir nuevo punto (3:1)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 3, 3));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 4, 1));
//Añadir nuevo punto (2:2)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 3, 2));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 4, 2));
//Añadir nuevo punto (5:1)
series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 5, 3, 5));
series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 5, 4, 1));
//Cambiar el marcador de la serie del gráfico
series.MarkerSize = 10;
series.MarkerSymbol = MarkerStyleTypeEx.Circle;
pres.Write("D:\\AsposeSeriesChart.pptx");
}
Nuevo enfoque de Aspose.Slides para .NET 13.x
Presentation pres = new Presentation();
ISlide slide = pres.Slides[0];
//Creando el gráfico predeterminado
IChart chart = slide.Shapes.AddChart(ChartType.ScatterWithSmoothLines, 0, 0, 400, 400);
//Obteniendo el índice de la hoja de datos del gráfico predeterminado
int defaultWorksheetIndex = 0;
//Accediendo a la hoja de datos del gráfico
IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;
//Eliminar series de demostración
chart.ChartData.Series.Clear();
//Añadir nuevas series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, "Serie 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, "Serie 2"), chart.Type);
//Tomar la primera serie del gráfico
IChartSeries series = chart.ChartData.Series[0];
//Añadir nuevo punto (1:3) allí.
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 1), fact.GetCell(defaultWorksheetIndex, 2, 2, 3));
//Añadir nuevo punto (2:10)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 1, 2), fact.GetCell(defaultWorksheetIndex, 3, 2, 10));
//Editar el tipo de serie
series.Type = ChartType.ScatterWithStraightLinesAndMarkers;
//Cambiar el marcador de la serie del gráfico
series.Marker.Size = 10;
series.Marker.Symbol = MarkerStyle.Star;
//Tomar la segunda serie del gráfico
series = chart.ChartData.Series[1];
//Añadir nuevo punto (5:2) allí.
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 3, 5), fact.GetCell(defaultWorksheetIndex, 2, 4, 2));
//Añadir nuevo punto (3:1)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 3, 3), fact.GetCell(defaultWorksheetIndex, 3, 4, 1));
//Añadir nuevo punto (2:2)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 4, 3, 2), fact.GetCell(defaultWorksheetIndex, 4, 4, 2));
//Añadir nuevo punto (5:1)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 5, 3, 5), fact.GetCell(defaultWorksheetIndex, 5, 4, 1));
//Cambiar el marcador de la serie del gráfico
series.Marker.Size = 10;
series.Marker.Symbol = MarkerStyle.Circle;
pres.Save("AsposeScatterChart.pptx", SaveFormat.Pptx);