Cómo crear gráficos en presentaciones en .NET

Compatibilidad con código heredado

Para usar el código heredado desarrollado con versiones de Aspose.Slides for .NET anteriores a la 13.x, es necesario realizar algunos cambios menores en su código y éste funcionará como antes. Todas las clases que estaban presentes en el antiguo Aspose.Slides for .NET bajo los espacios de nombres Aspose.Slide y Aspose.Slides.Pptx ahora están combinadas en un único espacio de nombres Aspose.Slides. Por favor, revise el 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 siga los pasos que describen cómo migrar a la nueva API combinada.

Enfoque heredado de Aspose.Slides para .NET

 //Instanciar la clase PresentationEx que representa un archivo PPTX
using (PresentationEx pres = new PresentationEx())
{
	//Acceder a la primera diapositiva
	SlideEx sld = pres.Slides[0];

	// Añadir gráfico con datos predeterminados
	ChartEx chart = sld.Shapes.AddChart(ChartTypeEx.ClusteredColumn, 0, 0, 500, 500);

	//Establecer el título del gráfico
	chart.ChartTitle.Text.Text = "Sample Title";
	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;

	//Establecer el índice de la hoja de datos del gráfico 
	int defaultWorksheetIndex = 0;

	//Obtener 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;

	//Agregar nuevas series
	chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
	chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.Type);

	//Agregar nuevas categorías
	chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
	chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
	chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"));

	//Obtener la primera serie del gráfico
	ChartSeriesEx series = chart.ChartData.Series[0];

	//Ahora rellenando 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));

	//Establecer el color de relleno para la serie
	series.Format.Fill.FillType = FillTypeEx.Solid;
	series.Format.Fill.SolidFillColor.Color = Color.Red;


	//Obtener la segunda serie del gráfico
	series = chart.ChartData.Series[1];

	//Ahora rellenando 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));

	//Establecer 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 categoría de la nueva serie

	//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 en la segunda etiqueta
	lbl = new DataLabelEx(series);
	lbl.ShowSeriesName = true;
	lbl.Id = 1;
	series.Labels.Add(lbl);

	//Mostrar el valor en 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 = "My text";
	lbl.Id = 3;
	series.Labels.Add(lbl);

	//Guardar la presentación con el gráfico
	pres.Write(@"D:\AsposeChart.pptx");
}

Enfoque nuevo de Aspose.Slides para .NET 13.x

//Instanciar la clase Presentation que representa un archivo PPTX//Instanciar la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation();

//Acceder a la primera diapositiva
ISlide sld = pres.Slides[0];

// Añadir gráfico con datos predeterminados
IChart chart = sld.Shapes.AddChart(ChartType.ClusteredColumn, 0, 0, 500, 500);

//Establecer el título del gráfico
//chart.ChartTitle.TextFrameForOverriding.Text = "Sample Title";
chart.ChartTitle.AddTextFrameForOverriding("Sample Title");
chart.ChartTitle.TextFrameForOverriding.TextFrameFormat.CenterText = NullableBool.True;
chart.ChartTitle.Height = 20;
chart.HasTitle = true;

//Configurar la primera serie para mostrar valores
chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;

//Establecer el índice de la hoja de datos del gráfico
int defaultWorksheetIndex = 0;

//Obtener 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;

//Agregar nuevas series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.Type);

//Agregar nuevas categorías
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"));

//Obtener la primera serie del gráfico
IChartSeries series = chart.ChartData.Series[0];

//Ahora rellenando 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));

//Establecer el color de relleno para la serie
series.Format.Fill.FillType = FillType.Solid;
series.Format.Fill.SolidFillColor.Color = Color.Red;


//Obtener la segunda serie del gráfico
series = chart.ChartData.Series[1];

//Ahora rellenando 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));

//Establecer 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 categoría de la nueva serie

//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 el valor en la tercera etiqueta
lbl = series.DataPoints[2].Label;
lbl.DataLabelFormat.ShowValue = true;
lbl.DataLabelFormat.ShowSeriesName = true;
lbl.DataLabelFormat.Separator = "/";

//Guardar la presentación con el gráfico
pres.Save("AsposeChart.pptx", SaveFormat.Pptx);

Por favor, revise el siguiente fragmento de código simple para crear un gráfico de dispersión desde cero en una presentación utilizando la API heredada de Aspose.Slides y cómo lograrlo con la nueva API combinada.

Enfoque heredado de Aspose.Slides para .NET

using (PresentationEx pres = new PresentationEx())
{
    SlideEx slide = pres.Slides[0];

    //Crear el gráfico predeterminado
    ChartEx chart = slide.Shapes.AddChart(ChartTypeEx.ScatterWithSmoothLines, 0, 0, 400, 400);

    //Obtener el índice de la hoja de datos del gráfico predeterminado
    int defaultWorksheetIndex = 0;

    //Acceder a la hoja de datos del gráfico
    ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;

    //Eliminar series de demostración
    chart.ChartData.Series.Clear();

    //Agregar nuevas series
    chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, "Series 1"), chart.Type);
    chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, "Series 2"), chart.Type);

    //Obtener la primera serie del gráfico
    ChartSeriesEx series = chart.ChartData.Series[0];

    //Agregar nuevo punto (1:3) allí.
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 1));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 2, 3));

    //Agregar 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;

    //Obtener la segunda serie del gráfico
    series = chart.ChartData.Series[1];

    //Agregar nuevo punto (5:2) allí.
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 3, 5));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 2, 4, 2));

    //Agregar nuevo punto (3:1)
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 3, 3));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 3, 4, 1));

    //Agregar nuevo punto (2:2)
    series.XValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 3, 2));
    series.YValues.Add(fact.GetCell(defaultWorksheetIndex, 4, 4, 2));

    //Agregar 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");
}

Enfoque nuevo de Aspose.Slides para .NET 13.x

Presentation pres = new Presentation();

ISlide slide = pres.Slides[0];

//Crear el gráfico predeterminado
IChart chart = slide.Shapes.AddChart(ChartType.ScatterWithSmoothLines, 0, 0, 400, 400);

//Obtener el índice de la hoja de datos del gráfico predeterminado
int defaultWorksheetIndex = 0;

//Acceder a la hoja de datos del gráfico
IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;

//Eliminar series de demostración
chart.ChartData.Series.Clear();

//Agregar nuevas series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, "Series 1"), chart.Type);
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, "Series 2"), chart.Type);

//Obtener la primera serie del gráfico
IChartSeries series = chart.ChartData.Series[0];

//Agregar nuevo punto (1:3) allí.
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 1), fact.GetCell(defaultWorksheetIndex, 2, 2, 3));

//Agregar 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 = MarkerStyleType.Star;

//Obtener la segunda serie del gráfico
series = chart.ChartData.Series[1];

//Agregar nuevo punto (5:2) allí.
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 3, 5), fact.GetCell(defaultWorksheetIndex, 2, 4, 2));

//Agregar nuevo punto (3:1)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 3, 3), fact.GetCell(defaultWorksheetIndex, 3, 4, 1));

//Agregar nuevo punto (2:2)
series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 4, 3, 2), fact.GetCell(defaultWorksheetIndex, 4, 4, 2));

//Agregar 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 = MarkerStyleType.Circle;

pres.Save("AsposeScatterChart.pptx", SaveFormat.Pptx);