Trabalhando com gráficos
Novo método insert_chart foi adicionado à classe DocumentBuilder. Então, vamos ver como inserir um gráfico de colunas simples no documento usando o método DocumentBuilder.insert_chart:
Como inserir um gráfico
Nesta seção aprenderemos como inserir um gráfico em um documento.
Inserir gráfico de colunas
O exemplo de código a seguir mostra como inserir um gráfico de colunas:
O código produz o seguinte resultado:
Existem métodos add, add_double e add_date, que foram expostos para cobrir todas as variantes possíveis de fontes de dados para todos os tipos de gráficos:
O código produz o seguinte resultado:
Inserir gráfico de dispersão
O exemplo abaixo mostra como inserir um gráfico de dispersão.
O código produz o seguinte resultado:
Inserir gráfico de área
O exemplo de código a seguir mostra como inserir um gráfico de área:
O código produz o seguinte resultado:
Inserir gráfico de bolhas
O exemplo de código a seguir mostra como inserir um gráfico de bolhas:
O código produz o seguinte resultado:
Trabalhando com gráficos por meio do objeto Shape.chart
Depois que o gráfico for inserido e preenchido com dados, você poderá alterar sua aparência. A propriedade Shape.chart contém todas as opções relacionadas ao gráfico disponíveis através do API público.
Por exemplo, vamos alterar o comportamento do título ou da legenda Chart:
O código gera os seguintes resultados:
Como trabalhar com ChartSeriesCollection of Chart
Vejamos a coleção ChartSeries. Todas as séries de gráficos estão disponíveis através da coleção Chart.series:
Você pode remover as séries uma por uma ou limpar todas elas, bem como adicionar uma nova, se necessário. O gráfico recém-inserido possui algumas séries padrão adicionadas a esta coleção. Para removê-los você precisa chamar o método chart.series.clear().
Trabalhando com classe única ChartSeries
Veja como trabalhar com uma série específica.
Por favor, veja o resultado abaixo:
Todos os ChartSeries únicos têm opções ChartDataPoint padrão. Tente usar o seguinte código para alterá-los:
Por favor, veja o resultado abaixo:
Como trabalhar com ChartDataPoint único de um ChartSeries
Usando ChartDataPoint você pode personalizar a formatação de um único ponto de dados da série do gráfico:
Por favor, veja o resultado abaixo:
Como trabalhar com ChartDataLabel de um único ChartSeries
Usando ChartDataLabel você pode especificar a formatação de um único rótulo de dados da série de gráficos, como mostrar/ocultar LegendKey, CategoryName, SeriesName, Value etc.
Por favor, veja o resultado abaixo:
Como definir opções padrão para ChartDataLabels de ChartSeries
A classe ChartDataLabelCollection define propriedades que podem ser usadas para definir opções padrão para ChartDataLabels para séries de gráficos. Essas propriedades incluem show_category_name, show_bubble_size, show_percentage, show_series_name, show_value etc.
Por favor, veja o resultado abaixo:
Como formatar o número do rótulo de dados do gráfico
Usando ChartDataLabel.number_format você pode especificar a formatação numérica de um único rótulo de dados do gráfico.
O exemplo de código a seguir mostra como formatar um número do rótulo de dados:
Como definir propriedades do eixo do gráfico
Se você deseja trabalhar com eixo do gráfico, escala e unidades de exibição para o eixo de valor, use as classes ChartAxis, AxisDisplayUnit e AxisScaling.
O exemplo de código a seguir mostra como definir as propriedades dos eixos X e Y:
Como definir o valor de tempo Date do eixo
O exemplo de código a seguir mostra como definir valores de data/hora para propriedades de eixo:
Como formatar o valor numérico do eixo
O exemplo de código a seguir mostra como alterar o formato dos números no eixo de valores:
Como definir limites do eixo
A classe AxisBound representa um limite mínimo ou máximo dos valores do eixo. O limite pode ser especificado como um valor numérico, de data e hora ou um valor “automático” especial.
O exemplo de código a seguir mostra como definir limites de um eixo:
Como definir a unidade de intervalo entre rótulos
O exemplo de código a seguir mostra como definir a unidade de intervalo entre rótulos em um eixo:
Como ocultar o eixo do gráfico
Se quiser mostrar ou ocultar o eixo do gráfico, você pode simplesmente fazer isso definindo o valor da propriedade ChartAxis.hidden.
O exemplo de código a seguir mostra como ocultar o eixo Y do gráfico:
Como alinhar o rótulo do gráfico
Se você deseja definir um alinhamento de texto para rótulos multilinhas, você pode simplesmente fazer isso definindo o valor da propriedade ChartAxis.tick_label_alignment.
O exemplo de código a seguir mostra como marcar o alinhamento do rótulo:
Como definir a formatação de preenchimento e traçado
A formatação de preenchimento e traçado pode ser definida para séries de gráficos, pontos de dados e marcadores. Para isso, é necessário utilizar as propriedades do tipo ChartFormat nas classes ChartSeries, ChartDataPoint e ChartMarker, bem como aliases para algumas propriedades, como fore_color, back_color, visible e transparency na classe Stroke.
O exemplo de código a seguir mostra como definir a cor da série:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.COLUMN, 432, 252)
chart = shape.chart
seriesColl = chart.series
# Delete default generated series.
seriesColl.clear()
# Create category names array.
categories = [ "AW Category 1", "AW Category 2" ]
# Adding new series. Value and category arrays must be the same size.
series1 = seriesColl.add("AW Series 1", categories, [ 1, 2 ])
series2 = seriesColl.add("AW Series 2", categories, [ 3, 4 ])
series3 = seriesColl.add("AW Series 3", categories, [ 5, 6 ])
# Set series color.
series1.format.fill.fore_color = drawing.Color.red
series2.format.fill.fore_color = drawing.Color.yellow
series3.format.fill.fore_color = drawing.Color.blue
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.set_series_color.docx")
O exemplo de código a seguir mostra como definir a cor e a espessura da linha:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_chart(aw.drawing.charts.ChartType.LINE, 432, 252)
chart = shape.chart
seriesColl = chart.series
# Delete default generated series.
seriesColl.clear()
# Adding new series.
series1 = seriesColl.add_double("AW Series 1", [ 0.7, 1.8, 2.6 ], [ 2.7, 3.2, 0.8 ])
series2 = seriesColl.add_double("AW Series 2", [ 0.5, 1.5, 2.5 ], [ 3, 1, 2 ])
# Set series color.
series1.format.stroke.fore_color = drawing.Color.red
series1.format.stroke.weight = 5
series2.format.stroke.fore_color = drawing.Color.light_green
series2.format.stroke.weight = 5
doc.save(docs_base.artifacts_dir + "WorkingWithCharts.line_color_and_weight.docx")