Cómo trabajar con gráficos en .NET
Esta guía muestra cómo insertar un gráfico nativo de Word y controlar su apariencia con Aspose.Words FOSS para .NET — ocultando la leyenda y los ejes, fijando la escala del eje de valores, y luego eligiendo un tipo de gráfico diferente y formateando las etiquetas de datos y los puntos individuales. Aspose.Words FOSS para .NET está disponible a través de NuGet o compilando desde el código fuente.
Guía paso a paso
Paso 1: Obtener la biblioteca
Clona el repositorio y compílalo Aspose.Words.sln en configuración Release, luego agrega una referencia de proyecto a Aspose.Words.csproj de tu propio proyecto .NET, como se describe en el Guía de instalación.
Paso 2: Insertar un gráfico y simplificar su apariencia
DocumentBuilder.InsertChart(chartType, width, height) inserta una forma de gráfico en el cursor y devuelve el Shape contenedor; su propiedad Chart es el objeto Chart que configuras, con AxisX, AxisY, Legend y Title como sus principales sub-objetos. Los tipos de gráficos viven en el espacio de nombres Aspose.Words.Drawing.Charts junto al espacio de nombres central Aspose.Words. Un gráfico ChartType.Bar mínimo y listo para presentación en un nuevo Document a menudo implica establecer Legend.Position a LegendPosition.None, configurar Hidden y HasMajorGridlines en AxisY y AxisX, establecer Title.Show a false, limpiar el marcador de posición ChartSeriesCollection con Series.Clear() antes de llamar a Series.Add(seriesName, categories, values), fijar AxisY.Scaling.Maximum a un AxisBound fijo en lugar de permitir que se escale automáticamente, y luego escribir el resultado con Document.Save. El ejemplo completo — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound y Document.Save — se ve así:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Bar, 432, 252);
Chart chart = shape.Chart;
chart.Legend.Position = LegendPosition.None;
ChartSeriesCollection seriesColl = chart.Series;
chart.AxisY.Hidden = true;
chart.AxisY.HasMajorGridlines = false;
chart.AxisX.Hidden = true;
chart.Title.Show = false;
seriesColl.Clear();
chart.AxisY.Scaling.Maximum = new AxisBound(100);
string[] categories = new string[] { "AW Category 1" };
seriesColl.Add("AW Series 1", categories, new double[] { 30 });
doc.Save("chart.docx");Esto construye un Document, inserta un gráfico ChartType.Bar, establece Chart.Legend.Position a LegendPosition.None para ocultar la leyenda, establece Hidden = true y HasMajorGridlines = false en chart.AxisY y Hidden = true en chart.AxisX, establece chart.Title.Show = false, borra la serie placeholder con seriesColl.Clear(), fija el eje de valores a un máximo 100 mediante chart.AxisY.Scaling.Maximum = new AxisBound(100), agrega una serie real con seriesColl.Add(seriesName, categories, values), y escribe el resultado con Document.Save.
Paso 3: Elegir un tipo de gráfico diferente
ChartType cubre las familias estándar de gráficos de Word — Line, Bar, Column (más variantes Stacked, PercentStacked y 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, y los tipos de Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, y Waterfall. Pase el valor que desea como argumento chartType a InsertChart — no existe un miembro que cambie el tipo de un gráfico existente después de insertarlo, así que elija el correcto desde el principio o reemplace la forma.
Paso 4: Añadir y formatear etiquetas de datos
Establezca series.HasDataLabels = true antes de configurar series.DataLabels (un ChartDataLabelCollection) — sus conmutadores de visualización no tienen efecto visible mientras las etiquetas están desactivadas. ShowValue, ShowCategoryName y ShowPercentage controlan qué piezas de información aparecen, y Position las posiciona respecto al punto de datos.
Paso 5: Formatear un punto de datos individual
Indexe en el DataPoints de una serie (un ChartDataPointCollection) para alcanzar un ChartDataPoint y establecer su Format, Marker, Explosion o InvertIfNegative de forma independiente al resto de la serie. Así es como se resalta una barra, segmento o marcador único sin volver a aplicar estilo a toda la serie.
Problemas comunes y soluciones
El nuevo gráfico muestra datos de demostración inesperados. InsertChart pobla el gráfico con series de marcador de posición. Llama a chart.Series.Clear() antes de agregar tus propias series.
Hiding AxisY no elimina las líneas de la cuadrícula. Hidden oculta la línea del eje y las etiquetas; las líneas de cuadrícula son un interruptor separado. Establezca HasMajorGridlines = false (y HasMinorGridlines = false si también se ven las líneas de cuadrícula menores).
Las etiquetas de datos no aparecen después de establecer ShowValue = true. HasDataLabels no se estableció primero en la serie. Establezca series.HasDataLabels = true, luego configure series.DataLabels.
Scaling.Maximum no parece aplicarse. Confirma que lo estás configurando en el objeto de eje correcto (chart.AxisY para el eje de valores en la mayoría de los tipos de gráfico) y que ninguna ruta de código anterior restablezca Scaling de nuevo a su valor predeterminado AxisBound().
Preguntas frecuentes
¿Cómo oculto la leyenda de un gráfico?
Establezca chart.Legend.Position = LegendPosition.None.
¿Cómo fijo un eje a un rango específico en lugar de escalar automáticamente?
Establezca AxisScaling.Minimum y/o AxisScaling.Maximum (ambos valores AxisBound) en chart.AxisX.Scaling o chart.AxisY.Scaling.
¿Cómo oculto el título del gráfico sin eliminarlo?
Establezca chart.Title.Show = false. El objeto ChartTitle y su Text permanecen; solo se suprime el título visible.
¿Qué tipos de gráficos están disponibles?
ChartType enumera las familias clásicas (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, más variantes apiladas y 3D) junto con los tipos de Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
¿Puedo formatear un punto de datos de forma diferente al resto de su serie?
Sí — indexe en ChartSeries.DataPoints y establezca el Format, Marker o Explosion de ese ChartDataPoint de forma independiente.