1. 程式人生 > >Python 寫excel檔案並插入散點圖

Python 寫excel檔案並插入散點圖

這兩天做小實驗,需要分析結果,當然需要些圖表。實驗的算例少說也有幾十個,一個個匯入excel,太煩了。幸好,本人是個程式設計師。大笑

google了下,python寫excel檔案的方法不少,最後我選定了xlsxwriter這個庫,使用python,很容易就能完成工作。下面說下步驟,並附上程式碼。

一、安裝xlsxwriter

當然,python是一定要安裝的,我使用的是Python 2.7.8。

現在安裝xlsxwriter

git clone http://github.com/jmcnamara/XlsxWriter/ # clone 程式碼
cd XlsxWriter
python setup.py install # 將xlsxwriter安裝到Python裡

二、新建xlsx檔案並新增worksheet

import xlsxwriter
workbook   = xlsxwriter.Workbook('filename.xlsx')   # 建立名為filename.xlsx的.xlsx檔案,<span style="color:#FF0000;">注意,這個庫每次開啟的檔案都會被清空內容</span>

worksheet1 = workbook.add_worksheet()               # 建立worksheet,括號裡可傳worksheet的名字,如workbook.add_worksheet('abc')
worksheet2 = workbook.add_worksheet()

worksheet1.write('A1', 123)                         # 在excel檔案的$A$1位置寫入數字123

workbook.close()
結果如下圖:

三、給.xlsx檔案新增資料並繪圖

先給檔案加內容:

import xlsxwriter

workbook = xlsxwriter.Workbook('chart_scatter.xlsx')
worksheet = workbook.add_worksheet()

# 給出內容標題
headings = ['Number', 'Batch 1', 'Batch 2']
data = [
    [2, 3, 4, 5, 6, 7],
    [10, 40, 50, 20, 10, 50],
    [30, 60, 70, 50, 40, 30],
]

worksheet.write_row('A1', headings, bold)   # 從$A$1位置開始橫向把內容標題寫入
worksheet.write_column('A2', data[0])       # 從$A$2位置開始縱向把內容寫入
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
新增散點圖:
# 括號中的series是這個表所用的所有資訊,包括顯示資料在excel檔案中位置,圖表的格式等,說見文末的官網連結。
# 這個series包括以下向個內容,
#    name為series名。在拆線圖中就是這條拆線的名字
#    categories為附屬資訊,本處做x座標使用,但不是每種表都需要這個引數
#    values指出顯示資料位置,是series中唯一強制要求給出的內容 
chart1.add_series(
     { 'name': '=Sheet1!$B$1'
	   , 'categories': '=Sheet1!$A$2:$A$7'
	   , 'values': '=Sheet1!$B$2:$B$7',})
	   
	   
# 這和上一個相似,不過使用索引來指示位置
chart1.add_series(
     { 'name': ['Sheet1', 0, 2]
	   , 'categories': ['Sheet1', 1, 0, 6, 0]
	   , 'values': ['Sheet1', 1, 2, 6, 2],})
	   
# 為表、x軸、y軸設定名字
chart1.set_title ({'name': 'Results of sample analysis'})
chart1.set_x_axis({'name': 'Test number'})
chart1.set_y_axis({'name': 'Sample length (mm)'})# 在給定偏移位置插入圖表
chartworksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10}) # D2是圖表中的座標

效果如下:


xlsxwriter官網:http://xlsxwriter.readthedocs.org/en/latest/contents.html

char類說明:http://xlsxwriter.readthedocs.org/en/latest/chart.html

散點圖例子:http://xlsxwriter.readthedocs.org/en/latest/example_chart_scatter.html