- Python XlsxWriter 教程
- Python XlsxWriter - 首頁
- Python XlsxWriter - 概述
- Python XlsxWriter - 環境搭建
- Python XlsxWriter - Hello World
- Python XlsxWriter - 重要類
- Python XlsxWriter - 單元格表示法和範圍
- Python XlsxWriter - 定義名稱
- Python XlsxWriter - 公式和函式
- Python XlsxWriter - 日期和時間
- Python XlsxWriter - 表格
- Python XlsxWriter - 應用篩選器
- Python XlsxWriter - 字型和顏色
- Python XlsxWriter - 數字格式
- Python XlsxWriter - 邊框
- Python XlsxWriter - 超連結
- Python XlsxWriter - 條件格式
- Python XlsxWriter - 新增圖表
- Python XlsxWriter - 圖表格式
- Python XlsxWriter - 圖表圖例
- Python XlsxWriter - 條形圖
- Python XlsxWriter - 折線圖
- Python XlsxWriter - 餅圖
- Python XlsxWriter - 迷你圖
- Python XlsxWriter - 資料驗證
- Python XlsxWriter - 大綱和分組
- Python XlsxWriter - 凍結和分割窗格
- Python XlsxWriter - 隱藏/保護工作表
- Python XlsxWriter - 文字框
- Python XlsxWriter - 插入圖片
- Python XlsxWriter - 頁面設定
- Python XlsxWriter - 頁首和頁尾
- Python XlsxWriter - 單元格批註
- Python XlsxWriter - 與Pandas一起使用
- Python XlsxWriter - VBA宏
- Python XlsxWriter 有用資源
- Python XlsxWriter - 快速指南
- Python XlsxWriter - 有用資源
- Python XlsxWriter - 討論
Python XlsxWriter - 新增圖表
Excel 最重要的功能之一是將資料轉換為圖表。圖表是資料的視覺表示。可以透過圖表選單生成不同型別的圖表。
為了以程式設計方式生成圖表,XlsxWriter 庫有一個 Chart 類。它的物件是透過呼叫 Workbook 類的add_chart()方法獲得的。然後,它使用add_series()方法與工作表中的資料範圍關聯。然後,使用其insert_chart()方法將圖表物件插入工作表。
示例
下面是顯示簡單柱狀圖的程式碼。
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
chart = wb.add_chart({'type': 'column'})
data = [
[10, 20, 30, 40, 50],
[20, 40, 60, 80, 100],
[30, 60, 90, 120, 150],
]
worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})
worksheet.insert_chart('B7', chart)
wb.close()
輸出
生成的圖表嵌入在工作表中,顯示如下:
add_series()方法具有以下附加引數:
Values - 這是最重要的屬性,是必選選項。它將圖表與其顯示的工作表資料鏈接。
Categories - 這設定圖表類別標籤。如果沒有給出,圖表將只假設從 1…n 的順序序列。
Name - 為序列設定名稱。名稱顯示在公式欄中。
Line - 設定序列線型別屬性,例如顏色和寬度。
Border - 設定序列的邊框屬性,例如顏色和樣式。
Fill - 設定序列的純色填充屬性,例如顏色。
Pattern - 設定序列的圖案填充屬性。
Gradient - 設定序列的漸變填充屬性。
data_labels - 為序列設定資料標籤。
Points - 為序列中的各個點設定屬性。
在下面的示例中,在新增資料序列時,定義了 value 和 categories 屬性。示例資料如下:
# Add the worksheet data that the charts will refer to. headings = ['Name', 'Phy', 'Maths'] data = [ ["Jay", 30, 60], ["Mohan", 40, 50], ["Veeru", 60, 70], ]
建立圖表物件後,第一個資料序列對應於 name 屬性值為 phy 的列。第一列中的學生姓名用作類別。
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
})
第二個資料序列也參考 A 列中的姓名作為類別,以及標題為 Maths 的 C 列作為 values 屬性。
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 2, 3, 2],
})
示例
這是完整的示例程式碼:
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
chart1 = wb.add_chart({'type': 'column'})
# Add the worksheet data that the charts will refer to.
headings = ['Name', 'Phy', 'Maths']
data = [
["Jay", 30, 60],
["Mohan", 40, 50],
["Veeru", 60, 70],
]
worksheet.write_row(0,0, headings)
worksheet.write_row(1,0, data[0])
worksheet.write_row(2,0, data[1])
worksheet.write_row(3,0, data[2])
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
})
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 2, 3, 2],
})
worksheet.insert_chart('B7', chart1)
wb.close()
輸出
工作表和基於它的圖表顯示如下:
add_series() 方法也有 data_labels 屬性。如果設定為 True,則繪製資料點的值將顯示在每列的頂部。
示例
以下是 add_series() 方法的完整程式碼示例:
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
chart1 = wb.add_chart({'type': 'column'})
# Add the worksheet data that the charts will refer to.
headings = ['Name', 'Phy', 'Maths']
data = [
["Jay", 30, 60],
["Mohan", 40, 50],
["Veeru", 60, 70],
]
worksheet.write_row(0,0, headings)
worksheet.write_row(1,0, data[0])
worksheet.write_row(2,0, data[1])
worksheet.write_row(3,0, data[2])
chart1.add_series({
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$4',
'values': '=Sheet1!$B$2:$B$4',
'data_labels': {'value':True},
})
chart1.add_series({
'name': ['Sheet1', 0, 2],
'categories': ['Sheet1', 1, 0, 3, 0],
'values': ['Sheet1', 1, 2, 3, 2],
'data_labels': {'value':True},
})
worksheet.insert_chart('B7', chart1)
wb.close()
輸出
執行程式碼並開啟Hello.xlsx。柱狀圖現在顯示了資料標籤。
資料標籤可以顯示在所有型別的圖表中。資料標籤的位置引數可以設定為頂部、底部、左側或右側。
XlsxWriter 支援以下型別的圖表:
Area - 建立一個區域(填充線)樣式圖表。
Bar - 建立一個條形樣式(轉置直方圖)圖表。
Column - 建立一個柱狀樣式(直方圖)圖表。
Line - 建立一個折線樣式圖表。
Pie - 建立一個餅圖樣式圖表。
Doughnut - 建立一個環形圖樣式圖表。
Scatter - 建立一個散點圖樣式圖表。
Stock - 建立一個股票樣式圖表。
Radar - 建立一個雷達圖樣式圖表。
許多圖表型別也有子型別。例如,柱狀圖、條形圖、區域圖和折線圖的子型別為堆疊和percent_stacked。可以在add_chart()方法中給出 type 和 subtype 引數。
workbook.add_chart({'type': column, 'subtype': 'stacked'})
圖表使用其insert_chart()方法嵌入到工作表中,該方法採用以下引數:
worksheet.insert_chart(location, chartObj, options)
options引數是一個字典,用於配置圖表的位和比例。選項屬性及其預設值為:
{
'x_offset': 0,
'y_offset': 0,
'x_scale': 1,
'y_scale': 1,
'object_position': 1,
'description': None,
'decorative': False,
}
x_offset和y_offset值以畫素為單位,而x_scale和y_scale值用於水平/垂直縮放圖表。description欄位可用於為圖表指定描述或“替代文字”字串。
decorative引數用於將圖表標記為裝飾性的,因此對於自動螢幕閱讀器來說是不提供資訊的。它必須設定為 True/False。最後,object_position引數控制圖表的物體定位。它允許以下值:
1 - 與單元格一起移動和調整大小(預設值)。
2 - 移動但不與單元格一起調整大小。
3 - 不與單元格一起移動或調整大小。