Como criar gráficos no Excel com o Python

Como criar gráficos no Excel com o Python

Este guia mostra como criar gráficos de coluna, linha, barra e tartarugas em quadros de trabalho do Excel usando Python e Aspose.Cells FOSS, com controle total sobre séries de dados, rótulos de categoria, título do gráfico e posição sem exigir o Microsoft Excel.

Por que criar gráficos com FOSS?

  1. Não é necessário o Excel: Construir gráficos inteiramente em Python, em qualquer sistema operacional.
  2. API de método por tipo:Utilização: add_bar(), add_line(), add_pie(), add_area(), e mais um método por tipo de gráfico.
  3. Série denominada: Configurar cada série com name=, category_data= argumentos de palavras-chave.
  4. Colocação precisa: O gráfico de controlo limita-se pelas coordenadas das células (linha superior, linha esquerda, linha inferior, linha direita).

Guia passo a passo

Passo 1: Instalar Aspose.Cells FOSS para Python

Instale o pacote Aspose.Cells FOSS a partir do PyPI usando o comando pip abaixo:

pip install aspose-cells-foss

Passo 2: Criar um livro de trabalho e preencher os dados

Criar uma nova pasta de trabalho e escrever dados numéricos mais etiquetas de categoria em células:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]
ws.name = "Sales Data"

##Category labels in column A (rows 2-5, leaving row 1 for a header)
ws.cells["A1"].value = "Quarter"
ws.cells["A2"].value = "Q1"
ws.cells["A3"].value = "Q2"
ws.cells["A4"].value = "Q3"
ws.cells["A5"].value = "Q4"

##Revenue series in column B
ws.cells["B1"].value = "Revenue"
ws.cells["B2"].value = 50000
ws.cells["B3"].value = 62000
ws.cells["B4"].value = 71000
ws.cells["B5"].value = 89000

##Expense series in column C
ws.cells["C1"].value = "Expenses"
ws.cells["C2"].value = 32000
ws.cells["C3"].value = 38000
ws.cells["C4"].value = 41000
ws.cells["C5"].value = 47000

Passo 3: Adicionar um gráfico de colunas

Utilização ws.charts.add_bar(top_row, left_col, bottom_row, right_col) O método retorna um objeto de gráfico diretamente:

##Insert a column chart occupying rows 7-22, columns 0-7
chart = ws.charts.add_bar(6, 0, 22, 7)

Os índices de linha e coluna são baseados em zero.


Passo 4: Configurar séries de dados

Adicionar cada série de dados usando: chart.n_series.add() com argumentos de palavras-chave:

##Add Revenue series
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")

##Add Expenses series
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")

A Comissão category_data argument especifica o intervalo de células para os rótulos do eixo x. O name argument define o rótulo de legenda da série.


Passo 5: Configurar o título e dados da categoria do gráfico

Configurar o título do gráfico atribuindo uma cadeia simples para chart.title, e configurar a visibilidade da legenda e posição:

chart.title = "Quarterly Sales vs Expenses"
chart.category_data = "A2:A5"   # x-axis labels at chart level
chart.show_legend = True
chart.legend_position = "bottom"

Passo 6: Salve o livro de trabalho

Chama-me . Workbook.save() com um .xlsx nome do ficheiro para gravar o livro com a sua tabela embutida no disco:

workbook.save("sales_chart.xlsx")
print("Workbook with chart saved.")

O exemplo completo a seguir combina todas as etapas em um único script executável que cria uma tabela trimestral de vendas e salva-a para um arquivo XLSX:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Data
labels = ["Q1", "Q2", "Q3", "Q4"]
revenue = [50000, 62000, 71000, 89000]
expenses = [32000, 38000, 41000, 47000]

ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "Revenue"
ws.cells["C1"].value = "Expenses"

for i, (label, rev, exp) in enumerate(zip(labels, revenue, expenses), start=2):
    ws.cells[f"A{i}"].value = label
    ws.cells[f"B{i}"].value = rev
    ws.cells[f"C{i}"].value = exp

chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Quarterly Sales vs Expenses"
chart.category_data = "A2:A5"
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")
chart.n_series.add("C2:C5", category_data="A2:A5", name="Expenses")
chart.show_legend = True
chart.legend_position = "bottom"

workbook.save("quarterly_chart.xlsx")

Passo 7: Crie um gráfico de linhas

O mesmo padrão funciona para gráficos de linhas usando add_line() chamá-lo em vez de add_bar() e fornecer dados mensais de receita:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = [42000, 47500, 53000, 49000, 61000, 68000]

ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Revenue"

for i, (m, r) in enumerate(zip(months, revenue), start=2):
    ws.cells[f"A{i}"].value = m
    ws.cells[f"B{i}"].value = r

chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Revenue Trend"
chart.category_data = "A2:A7"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Revenue")
chart.show_legend = True

workbook.save("trend_chart.xlsx")

Problemas comuns e soluções

1. Chart appears blank or empty

Causa da morte: O intervalo de dados passou para: n_series.add() não contém valores, ou a cadeia de intervalos de células é incorreta. Correção:Verifique se a faixa de células corresponde aos seus dados. ws.cells["B2"].value não é None.

2. Category labels not showing on x-axis

Causa da morte: chart.category_data não foi definido, ou o intervalo aponta para células vazias. Correção: Conjunto chart.category_data = "A2:A5" onde a coluna A contém as suas cadeias de etiquetas.

3. Chart position overlaps data

Causa da morte:A linha limita-se a: add_bar() sobreposição com a área de dados. Correção:Coloque o gráfico abaixo dos dados: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).

4. AttributeError: 'ChartCollection' object has no attribute 'add'

Causa da morte: A biblioteca FOSS utiliza API de método por tipo, não add(ChartType.COLUMN, ...). Correção:Utilização: ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...), ou ws.charts.add_area(...).


Perguntas Frequentes

Quais tipos de gráficos são suportados?

Utilização add_bar(), add_line(), add_pie(), add_area(), e add_stock() Estes cinco têm suporte completo de serialização XML. ChartCollection Classe para a lista completa de disponíveis add_* métodos.

Posso criar gráficos em um arquivo Excel existente?

Sim, carrega o caderno de trabalho com Workbook("existing.xlsx"), aceder à folha-alvo e adicionar um gráfico utilizando o ws.charts.add_*() método.

Como é que eu faço o título da tabela?

Atribuir uma sequência simples: chart.title = "My Chart Title".Não há . .text Subpropriedade: o título é a própria cadeia de caracteres.

Esta abordagem é compatível com os pandas?

Sim. Escreva os valores do DataFrame de pandas para células em um loop, e depois adicione um gráfico sobre esse intervalo de dados.


Recursos relacionados:

Ver também:

 Português