Kuinka luoda kaavioita Excelissä Pythonilla

Kuinka luoda kaavioita Excelissä Pythonilla

Kaaviot muuntavat raakaa taulukkolaskentadataa visuaalisiksi havainnoiksi. Aspose.Cells FOSS for Python mahdollistaa sarake-, viiva-, palkki- ja piirakkakaavioiden luomisen ohjelmallisesti, tarjoten täyden hallinnan tietosarjoihin, luokkamerkkeihin, kaavion otsikkoon ja sijaintiin, ilman että Microsoft Exceliä tarvitaan.

Miksi luoda kaavioita Aspose.Cells FOSS:lla?

  1. Ei Exceliä tarvittavana: Rakenna kaavioita kokonaan Pythonilla, millä tahansa käyttöjärjestelmällä.
  2. Metodi-tyyppi API: Käytä add_bar(), add_line(), add_pie(), add_area() ja muita — yksi metodi per kaaviotyyppi.
  3. Nimetyt sarjat: Määritä jokainen sarja name=, category_data= avainsana-argumenteilla.
  4. Tarkka sijoittelu: Hallitse kaavion rajoja solukoordinaateilla (top_row, left_col, bottom_row, right_col).

Vaiheittainen opas

Vaihe 1: Asenna Aspose.Cells FOSS for Python

pip install aspose-cells-foss

Vaihe 2: Luo työkirja ja täytä tiedot

Luo uusi työkirja ja kirjoita numeeriset tiedot sekä luokkamerkit soluihin:

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

Vaihe 3: Lisää pylväskaavio

Käytä ws.charts.add_bar(top_row, left_col, bottom_row, right_col) lisätäksesi pylväskaavion. Metodi palauttaa kaavio‑olion suoraan:

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

Rivi- ja sarakeindeksit alkavat nollasta.


Vaihe 4: Määritä tietosarja

Lisää jokainen tietosarja käyttämällä chart.n_series.add() avainsana‑argumenteilla:

##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")

category_data-argumentti määrittää solualueen x‑akselin tunnisteille. name-argumentti asettaa sarjan selitteen tunnisteen.


Vaihe 5: Aseta kaavion otsikko ja luokkatiedot

Aseta kaavion otsikko tavallisena merkkijonona:

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"

Vaihe 6: Tallenna työkirja

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

Täydellinen pylväskaavioesimerkki:

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")

Vaihe 7: Luo viivakaavio

Sama malli toimii add_line():

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")

Yleisiä ongelmia ja korjauksia

1. Kaavio on tyhjä tai se on tyhjä

Cause: Data-alue, joka on annettu n_series.add(), ei sisällä arvoja tai solualueen merkkijono on virheellinen.
Fix: Varmista, että solualue vastaa tietojasi. Tarkista, että ws.cells["B2"].value ei ole None.

2. Luokkamerkit eivät näy x-akselilla

Syy: chart.category_data ei ollut asetettu, tai alue osoittaa tyhjiin soluihin.
Korjaus: Aseta chart.category_data = "A2:A5" siihen, missä sarake A sisältää tunnistestringisi.

3. Kaavion sijainti peittää tietoja

Syy: Rivirajat add_bar() ovat päällekkäisiä datan alueen kanssa.
Korjaus: Aseta kaavio datan alapuolelle: ws.charts.add_bar(data_last_row + 2, 0, data_last_row + 18, 7).

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

Syy: FOSS‑kirjasto käyttää metodi-per-tyyppi API:a, ei add(ChartType.COLUMN, ...).
Korjaus: Käytä ws.charts.add_bar(...), ws.charts.add_line(...), ws.charts.add_pie(...) tai ws.charts.add_area(...).


Usein kysytyt kysymykset

Mitkä kaaviotyypit ovat tuettuja?

Käytä add_bar(), add_line(), add_pie(), add_area() ja add_stock() yleisimpiä tyyppejä varten. Näillä viidellä on täysi XML-sarjoitustuki. Tarkista ChartCollection-luokka saadaksesi täydellisen luettelon käytettävissä olevista add_*-menetelmistä.

Voinko luoda kaavioita olemassa olevaan Excel‑tiedostoon?

Kyllä. Lataa työkirja Workbook("existing.xlsx")-menetelmällä, avaa kohdearkki, ja lisää kaavio käyttämällä sopivaa ws.charts.add_*()-menetelmää.

Kuinka asetetaan kaavion otsikko?

Määritä tavallinen merkkijono: chart.title = "My Chart Title". .text-alipropertyä ei ole: otsikko on itse merkkijono.

Onko tämä lähestymistapa yhteensopiva pandas‑kirjaston kanssa?

Kyllä. Kirjoita pandas DataFrame -arvot soluihin silmukassa, ja lisää sitten kaavio kyseiselle data-alueelle.


Liittyvät resurssit:

 Suomi