Kaavioiden kanssa työskenteleminen
Yleiskatsaus
Aspose.Cells FOSS käyttää jokaiselle kaaviotyypille omaa metodia sisältävää API:a. Yleisenadd(ChartType.X, ...)‑kutsun, jokaisella kaaviotyypillä on oma omistettu metodinsa
taulukon charts‑kokoelmassa:
| Menetelmä | Kaavion tyyppi |
|---|---|
ws.charts.add_bar(top_row, left_col, bottom_row, right_col) | Ryhmitelty sarake (palkkikaavio) |
ws.charts.add_line(top_row, left_col, bottom_row, right_col) | Viiva |
ws.charts.add_pie(top_row, left_col, bottom_row, right_col) | Piirakkakaavio |
ws.charts.add_area(top_row, left_col, bottom_row, right_col) | Alue |
Kaikki neljä sijaintiparametria kuvaavat suorakulmaista aluetta taulukossa, johon kaavio upotetaan. Rivi- ja sarakeindeksit ovat nollapohjaisia. Jokainen metodi palauttaa Chart-objektin, jonka voit konfiguroida edelleen ennen tallentamista.
Rajoitus: Vain LINE, BAR, PIE, AREA ja STOCK -kaaviotyypit voidaan tallentaa XLSX-muotoon.
wb.save()-kutsun käyttäminen työkirjassa, joka sisältää jonkin muun kaaviotyypin (esim. SCATTER, WATERFALL, RADAR, TREEMAP, HISTOGRAM), aiheuttaaNotImplementedError.
Lisää pylväskaavio
Alla oleva esimerkki kirjoittaa pienen tuotto‑tuotteen tietojoukon ja lisää sitten pylväskaavion, joka on sijoitettu tietojen alapuolelle.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Data ---
ws.cells["A1"].value = "Product"
ws.cells["B1"].value = "Revenue"
products = ["Widget A", "Widget B", "Widget C", "Widget D", "Widget E"]
revenues = [12_500, 18_200, 9_800, 21_400, 15_600]
for i, (product, revenue) in enumerate(zip(products, revenues), start=2):
ws.cells[f"A{i}"].value = product
ws.cells[f"B{i}"].value = revenue
##--- Chart (rows 7–22, columns A–H, all zero-based) ---
##top_row=6, left_col=0, bottom_row=22, right_col=7
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Revenue by Product"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue (USD)")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("column_chart.xlsx")
print("Saved column_chart.xlsx")Data vie rivejä 1–6 (nollapohjaiset rivit 0–5), joten top_row=6 sijoittaa kaavion heti alle ilman, että se peittää dataa.
Viivakaavion lisääminen
Viivakaaviot toimivat hyvin trendien näyttämisessä ajan myötä.
Kutsusignatuuri on
identtinen add_bar — vain menetelmän nimi muuttuu.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Monthly trend data ---
ws.cells["A1"].value = "Month"
ws.cells["B1"].value = "Page Views"
ws.cells["C1"].value = "Conversions"
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
page_views = [4_200, 5_100, 4_800, 6_300, 7_100, 6_800]
conversions = [ 210, 255, 230, 340, 390, 360]
for i, (month, pv, cv) in enumerate(zip(months, page_views, conversions), start=2):
ws.cells[f"A{i}"].value = month
ws.cells[f"B{i}"].value = pv
ws.cells[f"C{i}"].value = cv
##--- Line chart below the data ---
chart = ws.charts.add_line(8, 0, 24, 8)
chart.title = "Monthly Website Metrics"
chart.n_series.add("B2:B7", category_data="A2:A7", name="Page Views")
chart.n_series.add("C2:C7", category_data="A2:A7", name="Conversions")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("line_chart.xlsx")
print("Saved line_chart.xlsx")Kaavion otsikko ja selite
Aseta kaavion otsikko asettamalla tavallinen merkkijono suoraan chart.title:lle. Ominaisuus hyväksyy str — älä yritä käyttää aliominaisuutta, kuten .title.text, jota ei ole tässä kirjastossa.
##Correct
chart.title = "Quarterly Sales"
##Wrong — raises AttributeError
##chart.title.text = "Quarterly Sales"Legendan näkyvyys ja sijainti ohjataan kahdella ominaisuudella:
chart.show_legend = True # display the legend
chart.legend_position = "bottom" # "bottom", "top", "left", "right"Piilottaaksesi legendan kokonaan, aseta chart.show_legend = False. legend_position arvoa ei oteta huomioon, kun legenda on piilotettu.
Tietosarjan määritys
Käytä chart.n_series.add() liittääksesi tietovälit kaavioon. Anna kaikki
argumentit avainsana-argumentteina välttääksesi sijaintijärjestyksen sekaannusta:
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")Voit lisätä useita sarjoja yhteen kaavioon kutsumalla n_series.add useammin kuin kerran. Jokainen kutsu lisää uuden sarjan:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Headers
ws.cells["A1"].value = "Quarter"
ws.cells["B1"].value = "North"
ws.cells["C1"].value = "South"
ws.cells["D1"].value = "East"
data = [
("Q1", 8_400, 6_100, 7_200),
("Q2", 9_200, 7_400, 8_100),
("Q3", 10_500, 8_900, 9_600),
("Q4", 11_800, 9_300, 10_200),
]
for i, row in enumerate(data, start=2):
ws.cells[f"A{i}"].value = row[0]
ws.cells[f"B{i}"].value = row[1]
ws.cells[f"C{i}"].value = row[2]
ws.cells[f"D{i}"].value = row[3]
chart = ws.charts.add_bar(6, 0, 22, 8)
chart.title = "Regional Sales by Quarter"
chart.n_series.add("B2:B5", category_data="A2:A5", name="North")
chart.n_series.add("C2:C5", category_data="A2:A5", name="South")
chart.n_series.add("D2:D5", category_data="A2:A5", name="East")
chart.show_legend = True
chart.legend_position = "bottom"
workbook.save("multi_series_chart.xlsx")
print("Saved multi_series_chart.xlsx")Luokkatiedot
Luokkamerkit voidaan asettaa kaavion tasolla tai yksittäisen sarjan tasolla.
Kaavion tasoinen luokkadata sovelletaan kaikkiin sarjoihin oletuksena:
chart.category_data = "A2:A5"Sarjan tason luokkadata (category_data-avainsanan argumentin kautta
n_series.add) ohittaa kaavion tason asetuksen kyseiselle sarjalle:
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")Kun jokainen sarja jakaa saman luokkavälin, chart.category_data asettaminen kerran on tiiviimpää. Kun sarjoilla on eri luokkavälit — esimerkiksi kaksi tietojoukkoa, joilla on eri aikajaksoja — käytä sen sijaan sarjakohtaista avainsanaargumenttia.
Kaavion sijoittelu
Jokaisen add_*-menetelmän neljä sijaintiparametria määrittävät rajaavan suorakulmion taulukossa, mitattuna nollapohjaisina rivi- ja sarakeindekseinä:
add_bar(top_row, left_col, bottom_row, right_col)| Parametri | Merkitys |
|---|---|
top_row | Nollapohjainen indeksi ensimmäiselle riville, jonka kaavio varaa |
left_col | Nollapohjainen indeksi vasemmanpuoleisimmasta sarakkeesta |
bottom_row | Nollapohjainen indeksi viimeiselle riville, jonka kaavio varaa |
right_col | Nollapohjainen indeksi oikeanpuoleisimmasta sarakkeesta |
Yleinen malli on sijoittaa kaavio suoraan datan alapuolelle.
Jos tietosi päättyvät Excelin riviin 6 (nollapohjainen rivin indeksi 5), aloita kaavio kohdassa top_row=6:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Data in rows 1–5 (zero-based 0–4)
labels = ["Alpha", "Beta", "Gamma", "Delta", "Epsilon"]
values = [30, 45, 28, 60, 52]
ws.cells["A1"].value = "Category"
ws.cells["B1"].value = "Score"
for i, (label, val) in enumerate(zip(labels, values), start=2):
ws.cells[f"A{i}"].value = label
ws.cells[f"B{i}"].value = val
##Data ends at zero-based row 5 (Excel row 6).
##Place chart from row 6 to row 22, columns A–H (0–7).
chart = ws.charts.add_bar(6, 0, 22, 7)
chart.title = "Category Scores"
chart.n_series.add("B2:B6", category_data="A2:A6", name="Score")
chart.show_legend = False
workbook.save("positioned_chart.xlsx")
print("Saved positioned_chart.xlsx")Tee kaavio tarpeeksi korkea luettavaksi: vähintään 15 riviä korkea (bottom_row - top_row >= 15) ja vähintään 6 sarakkeen leveys on kohtuullinen lähtökohta.
Yleiset virheet
| Väärin | Oikein | Miksi |
|---|---|---|
ws.charts.add(ChartType.COLUMN, ...) | ws.charts.add_bar(...) | Älä kutsu ws.charts.add(ChartType.X, ...) suoraan tuettomille tyypeille — se nostaa NotImplementedError 11:stä 16:sta kaaviotyypistä. Käytä sen sijaan add_bar(), add_line(), add_pie(), add_area() tai add_stock(). |
chart.title.text = "My Chart" | chart.title = "My Chart" | chart.title on tavallinen merkkijonomäärite, ei objekti, jossa on .text alimäärite. |
chart.n_series.add("B2:B5", "A2:A5", "Revenue") | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") | Toinen ja kolmas parametri on annettava avainsana-argumentteina epäselvyyden välttämiseksi. |
chart = ws.charts.add_bar(0, 0, 15, 7) (päällekkäistä dataa) | Aseta top_row viimeisen datarivin alapuolelle | Kaavio, joka peittää päälle dataa, piilottaa arvot ja aiheuttaa sekavia asetteluja. |
chart.legend_position = "bottom" ilman chart.show_legend = True | Aseta chart.show_legend = True ensin | legend_position ei vaikuta, kun show_legend on False. |
Katso myös
- API Reference: Täydellinen luokka- ja menetelmädokumentaatio kohteelle
aspose.cells_foss - Knowledge Base: Tehtäväkeskeiset ohjeet
- Product Overview: Ominaisuuksien ja kyvykkyyksien yhteenveto
- Getting Started / Installation: pip-asennus ja käyttöönotto
- Blog: Python Excel Chart Tutorial: Vaiheittainen kaavion luontiohje