Trabajando con Gráficos
Trabajando con gráficos
Aspose.Words FOSS para .NET puede insertar gráficos nativos de Word — los mismos gráficos DrawingML que Word crea — como una forma en la capa de dibujo. DocumentBuilder.InsertChart crea la forma y la devuelve; la propiedad Chart de la forma expone series, ejes, leyenda y formato. Esta guía cubre la creación de un gráfico, la elección del tipo de gráfico, el trabajo con series y puntos de datos, ejes y líneas de cuadrícula, y el formato de los elementos del gráfico.
Crear un gráfico
Llame a DocumentBuilder.InsertChart(chartType, width, height) para insertar una forma de gráfico en el cursor y obtener de regreso el Shape contenedor. Su propiedad Chart es el objeto Chart que configura. Un gráfico recién insertado incluye series de demostración de marcador de posición, así que limpie Chart.Series antes de añadir datos reales con ChartSeriesCollection.Add(seriesName, categories, values):
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;
// Delete default generated series.
chart.Series.Clear();
string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });
doc.Save("chart.docx");Este ejemplo construye un Document, usa DocumentBuilder.InsertChart(ChartType.Line, 432, 252) para insertar una forma de gráfico de líneas, lee shape.Chart para obtener el objeto Chart, llama a chart.Series.Clear() para eliminar la serie de marcador de posición, agrega una serie real con chart.Series.Add(seriesName, categories, values), y escribe el resultado con Document.Save.
Tipos de gráficos
ChartType cubre las familias estándar de gráficos de Word — Line, Bar, Column (más sus variantes Stacked, PercentStacked y 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, y los tipos de gráficos más recientes de Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker y Waterfall. Pase el valor deseado como argumento chartType a InsertChart; no hay forma de cambiar el tipo de un gráfico existente después de la inserción salvo reemplazando la forma.
Series y puntos de datos
Chart.Series es un ChartSeriesCollection de objetos ChartSeries. Más allá de la sobrecarga Add(seriesName, categories, values) utilizada arriba, ChartSeriesCollection también tiene sobrecargas para pares de valores X/Y, fechas y tamaños de burbuja, además de Insert, Remove(index) y Clear(). Cada ChartSeries expone DataPoints (un ChartDataPointCollection) para el formateo por punto — Format, Marker, Explosion y InvertIfNegative — y HasDataLabels / DataLabels para activar y configurar un ChartDataLabelCollection (ShowValue, ShowCategoryName, ShowPercentage, Position).
Ejes y líneas de cuadrícula
Chart.AxisX, AxisY y AxisZ son objetos ChartAxis (con Chart.Axes como un ChartAxisCollection para iterar todos ellos). Cada eje tiene HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (con banderas *IsAuto coincidentes), Crosses / CrossesAt, CategoryType, y un objeto TickLabels (AxisTickLabels) para la fuente y orientación de la etiqueta. ChartAxis.Title (ChartAxisTitle) establece el texto de la leyenda del eje a través de sus propiedades Text y Show.
Leyenda, título y tabla de datos
Chart.Title (ChartTitle) establece la leyenda general del gráfico — Text, Show y Font. Chart.Legend (ChartLegend) controla si y dónde aparece la leyenda mediante Position (un valor LegendPosition como Bottom, Right o Top) y expone LegendEntries individuales. Chart.DataTable (ChartDataTable) puede mostrar los valores subyacentes de las series como una tabla debajo del área del gráfico, con Show, HasLegendKeys y conmutadores de borde.
Formato de los elementos del gráfico
La mayoría de los elementos del gráfico — series, puntos de datos, ejes, el título y la leyenda — exponen una propiedad Format de tipo ChartFormat, que a su vez expone Fill y Stroke para los colores de ese elemento, además de un ShapeType (ChartShapeType) para las formas de los marcadores de puntos de datos. ChartFormat.SetDefaultFill() restablece un elemento a su apariencia predeterminada basada en el tema.
Consejos y mejores prácticas
- Siempre borra o reemplaza la serie de marcadores (
chart.Series.Clear()) antes de añadir datos reales — un gráfico recién insertado incluye datos de muestra ya incorporados. - Utiliza sobrecargas de
ChartSeriesCollection.Addque coincidan con la forma de tus datos (categorías, pares X/Y, fechas o tamaños de burbuja) en lugar de forzar todo a través de pares categoría/valor. - Configura
HasDataLabels = trueen una serie antes de configurar su colecciónDataLabels— las propiedades de visualización de la colección no tienen efecto visible mientras las etiquetas están desactivadas. - Lee
Chart.ChartSpaceo verifica elChartTypeespecífico antes de confiar en el comportamiento de líneas de cuadrícula o ejes que difiere entre los gráficos clásicos y los de estilo Word-2016. - Prefiere
ChartFormat.SetDefaultFill()en lugar de borrar manualmente cada propiedad de relleno cuando deseas restablecer la apariencia de un elemento.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
| El nuevo gráfico muestra datos de demostración inesperados | InsertChart inicializa el gráfico con series de marcador de posición | Llame a chart.Series.Clear() antes de agregar sus propias series |
| Las etiquetas de datos no aparecen | No se estableció HasDataLabels en la serie antes de configurar DataLabels | Establezca series.HasDataLabels = true, luego configure ShowValue/ShowCategoryName en series.DataLabels |
| Las líneas de cuadrícula no se muestran en el eje de valores | HasMajorGridlines/HasMinorGridlines predeterminados a false para ese eje | Establecer chart.AxisY.HasMajorGridlines = true (y HasMinorGridlines si es necesario) |
| La leyenda no aparece | Chart.Legend.Position está configurado a LegendPosition.None | Establezca Position a Bottom, Right, Top, Left o TopRight |
FAQ
¿Cómo inserto un gráfico en un documento?
Llame a DocumentBuilder.InsertChart(chartType, width, height). Devuelve el Shape que lo contiene; lea su propiedad Chart para configurar el gráfico.
¿Cómo agrego datos a un gráfico?
Borre la serie de marcador de posición con chart.Series.Clear(), luego llame a chart.Series.Add(seriesName, categories, values) (o a una de las otras sobrecargas de Add para datos X/Y, de fecha o de burbuja).
¿Qué tipos de gráficos están disponibles?
ChartType incluye las familias clásicas (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, además de sus variantes apiladas y 3D) y los tipos de gráficos de Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
¿Cómo cambio dónde aparece la leyenda?
Establezca Chart.Legend.Position a un valor LegendPosition, como LegendPosition.Bottom o LegendPosition.Right.
¿Puedo formatear un punto de datos individual de forma diferente al resto de su serie?
Sí — indexa en ChartSeries.DataPoints (un ChartDataPointCollection) y establece el Format, Marker o Explosion de ese ChartDataPoint de forma independiente del formato a nivel de serie.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
DocumentBuilder.InsertChart | Inserta una forma de gráfico en el cursor y la devuelve. |
Chart | El objeto de configuración del gráfico, al que se accede mediante Shape.Chart. |
ChartType | Enum de tipos de gráfico disponibles (line, bar, pie y tipos de gráfico de Word-2016). |
ChartSeriesCollection / ChartSeries | Las series de datos del gráfico y los métodos para añadir, insertar o eliminarlas. |
ChartDataPointCollection / ChartDataPoint | Formato por punto dentro de una serie. |
ChartDataLabelCollection / ChartDataLabel | Etiquetas de valor/categoría mostradas en los puntos del gráfico. |
ChartAxis / ChartAxisCollection | Configuración del eje — líneas de cuadrícula, unidades, punto de cruce, etiquetas de marcas. |
ChartLegend / LegendPosition | Visibilidad y ubicación de la leyenda. |
ChartTitle | El título general del gráfico. |
ChartDataTable | Tabla opcional de valores de series mostrada debajo del área del gráfico. |
ChartFormat | Formato de relleno, trazo y forma compartido por la mayoría de los elementos del gráfico. |