Práce s grafickými tabulkami
Přehled
Aspose.Cells FOSS uses a method-per-chart-type API. Instead of a generic add(ChartType.X, ...) volání, každý typ grafu má svou vlastní metodou na pracovního listu. charts Sbírka:
| Metodika | Typ grafu |
|---|---|
ws.charts.add_bar(top_row, left_col, bottom_row, right_col) | Skláštěné sloupce (částičkový graf) |
ws.charts.add_line(top_row, left_col, bottom_row, right_col) | Částka |
ws.charts.add_pie(top_row, left_col, bottom_row, right_col) | Těta. |
ws.charts.add_area(top_row, left_col, bottom_row, right_col) | Oblast: |
Všechny čtyři polohové parametry popisují obdélníkovou plochu v listu, kde: index řádku a sloupce jsou: nulový základ.Každý . Metodou se vrací a. Chart objekt, který si dále nastavíte před ukládáním.
Omezení: Pouze typy LINE, BAR, PIE, AREA a STOCK mohou být uloženy do XLSX. Volání
wb.save()s pracovním souborem, který obsahuje jakýkoli jiný typ grafu (např. SCATTER, WATERFALL, RADAR, TREEMAP, HISTOGRAM) bude vyvolatNotImplementedError.
Přidání sloupcového grafu
Příklad níže píše malý soubor údajů o příjmech podle produktu a pak přidává graf ve sloupci umístěný pod daty.
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")Údaje zaujímá řádky 1 - 6 (rozpočet 0 - 5 na základě nuly), takže top_row=6 umístění tabulka bez překrývání údajů.
Přidání čárového grafu
Čárové grafy fungují dobře pro zobrazování trendů v čase. identické s add_bar - Změňuje se pouze název metody.
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")Název a legenda tabulky
Nastavit název grafu přidělením prostého řetězce přímo na chart.title.- To je ono . majetek přijímá a str • nesnažte se získat přístup k pod-vlastnost jako je: .title.text, který v této knihovně neexistuje.
##Correct
chart.title = "Quarterly Sales"
##Wrong — raises AttributeError
##chart.title.text = "Quarterly Sales"Viditelnost a poloha legend jsou řízeny dvěma vlastnostmi:
chart.show_legend = True # display the legend
chart.legend_position = "bottom" # "bottom", "top", "left", "right"Aby se legenda zcela skrývala, nastavil jsem si… chart.show_legend = False.- To je ono . legend_position Hodnota je ignorována, když se legenda skrývá.
Konfigurace datových řad
Použití: chart.n_series.add() Přenést všechny údaje. Argumenty jako: argumenty klíčových slov aby se zabránilo zmatkání podle polohy:
chart.n_series.add("B2:B6", category_data="A2:A6", name="Revenue")Můžete přidat více řad do jednoho grafu zavoláním n_series.add více Každý hovor přidává novou sérii:
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")Kategorické údaje
Označení kategorií lze nastavit na úrovni tabulky nebo na jednotlivých sériích.
Údaje o kategoriích na úrovni grafu se v předvoleném nastavení vztahuje na všechny řady:
chart.category_data = "A2:A5"Údaje o kategoriích na úrovni sérií (přístupem Evropské unie) category_data argument klíčového slova k n_series.add) přesahuje nastavení úrovně grafu pro tuto konkrétní sérii:
chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue")Pokud každá série sdílí stejný rozsah kategorií, nastavení chart.category_data Když řady mají různé kategorie rozsahů - například, dvě soubory dat s různými časovými obdobím - použijte argument pro klíčové slovo podle řady Místo toho.
Položka na grafu
Čtyři poziční parametry pro každý add_* Metodou definovat omezení. obdélník v listu, měřený číselnými indexy řádků a sloupců na základě nuly:
add_bar(top_row, left_col, bottom_row, right_col)| Parametr: | Význam |
|---|---|
top_row | Index založený na nule prvního řádku obsaženého grafickým číslem. |
left_col | Index na bázi nuly v nejvzdálenějším levé sloupci |
bottom_row | Index na bázi nuly posledního řádku obsaženého grafickým číslem. |
right_col | Index na bázi nuly v pravém sloupci |
Obvyklým vzorem je umístit graf přímo pod data. končí na řádku 6 programu Excel (index 5 z nuly založený na čísle), začít graf u: 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")Vytvořte si tabulku dostatečně vysokou, aby byla čitelná: výška nejméně 15 řádků (bottom_row - top_ro >= 15) a šířka nejmíň 6 sloupců je rozumným počátečním bodem.
Časté chyby
| - Nepravdivé. | - Dobře. | Proč? |
|---|---|---|
ws.charts.add(ChartType.COLUMN, ...) | ws.charts.add_bar(...) | Nevolej mi. ws.charts.add(ChartType.X, ...) přímo pro nepodporované typy zvýší NotImplementedError pro 11 ze 16 typů grafů. add_bar(), add_line(), add_pie(), add_area(),nebo: add_stock() Místo toho. |
chart.title.text = "My Chart" | chart.title = "My Chart" | chart.title je prostá vlastnost řetězce, ne objekt s .text podvlastnictví. |
chart.n_series.add("B2:B5", "A2:A5", "Revenue") | chart.n_series.add("B2:B5", category_data="A2:A5", name="Revenue") | Druhý a třetí parametr musí být předán jako argumenty klíčového slova, aby se zabránilo nejednoznačnosti. |
chart = ws.charts.add_bar(0, 0, 15, 7) (data se překrývají) | Místo top_row pod poslední řádkem údajů | Graf, který překrývá data, zakrýva hodnoty a způsobuje matoucí uspořádání. |
chart.legend_position = "bottom" bez: chart.show_legend = True | Sestavení: chart.show_legend = True první . | legend_position nemá žádný účinek, pokud: show_legend je: False. |
Viz také:
- Odkaz na API: Úplná dokumentace třídy a metody pro:
aspose.cells_foss - Základní znalosti:Příručky pro provádění jednotlivých úkolů
- Přehled produktu: Souhrnnost vlastností a schopností
- Začínání / instalace: instalace a nastavení pip
- Blog: Python Excel Chart Tutorial (Pytónový výukový diagram):Příručka k vytvoření grafu krok za krokom: