畢竟是一個看顏值的世界——Python實現從Excel讀取數據並繪製成精美圖像

簡介:本課程對於需要書寫實驗報告,學位論文,發表文章,做PPT報告的學員具有較大價值,將帶你通過操作,將數據變為一個出版級的圖像。課程的數據和圖像,來源於作者的一篇SCI文章,是一真實案例。

本教程由付曉亮發布在實驗樓,完整教程、代碼及在線練習地址:Python實現從excel讀取數據並繪製成精美圖像(更多項目請查看Python學習路徑

這個世界從古至今一直是一個看顏值的世界。對於我們作報告,寫文章時使用的圖片,也是一樣的。一圖勝千言,一張製作精美的圖片,不僅能展示大量的信息,更能體現繪圖者的水平,審美,與態度。

一、課程介紹

1. 內容簡介

使用python從excel讀取數據,並使用matplotlib繪製成二維圖像。這一過程中,將通過一系列操作來美化圖像,最終得到一個可以出版級別的圖像。

2. 課程知識點

  • 使用xlrd擴展包讀取excel數據

  • 使用matplotlib繪製二維圖像

  • 美化圖像,添加標註,注釋,顯示Latex風格公式,坐標點處透明化處理等技巧

3. 適合人群

本課程難度為中等,適合具有Python基礎的用戶,對於需要書寫實驗報告,學位論文,發表文章,做PPT報告的學員具有較大價值。

4. 效果截圖

二、開發準備

打開Xfce終端,下載並安裝的相關依賴 。

$ sudo apt-get update$ sudo apt-get install python-dev$ sudo pip install numpy$ sudo apt-get install python-matplotlib$ sudo pip install xlrd$ sudo apt-get install python-sip$ sudo apt-get install libqt4-dev$ sudo apt-get install python-qt4 python-qt4-dev pyqt4-dev-tools qt4-dev-tools

遇到是否安裝的詢問時,輸入y,按回車鍵繼續安裝。

三、實驗步驟

3.1 繪製一個簡單圖像,測試擴展包安裝是否正常

安裝完成matplotlib後,運行一個小程序測試其是否正常。我們來繪製一個非常簡單的正弦函數。

import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0, 10, 500)dashes = [10, 5, 100, 5] # 10 points on, 5 off, 100 on, 5 offfig, ax = plt.subplots()line1, = ax.plot(x, np.sin(x), "--", linewidth=2, label="Dashes set retroactively")line1.set_dashes(dashes)line2, = ax.plot(x, -1 * np.sin(x), dashes=[30, 5, 10, 5], label="Dashes set proactively")ax.legend(loc="lower right")plt.show()

如果一切正常,應該得到如下顯示的圖片:

這段程序來自官方的常式,只作為檢驗安裝包之用。這個圖片過於簡單,也算不上精美。

3.2 測試xlrd擴展包

xlrd顧名思義,就是excel文件的後綴名.xl文件read的擴展包。這個包只能讀取文件,不能寫入。寫入需要使用另外一個包。但是這個包,其實也能讀取.xlsx文件。

從excel中讀取數據的過程比較簡單,首先從xlrd包導入open_workbook,然後打開excel文件,把每個sheet里的每一行每一列數據都讀取出來即可。很明顯,這是個循環過程。

from xlrd import open_workbookx_data1=[]y_data1=[]wb = open_workbook("phase_detector.xlsx")for s in wb.sheets(): print "Sheet:",s.name for row in range(s.nrows): print "the row is:",row values = [] for col in range(s.ncols): values.append(s.cell(row,col).value) print values x_data1.append(values[0]) y_data1.append(values[1])

如果安裝包沒有問題,這段代碼應該能列印出excel表中的數據內容。解釋一下 這段代碼:打開一個excel文件後,首先對文件內的sheet進行循環,這是最外層循環;在每個sheet內,進行第二次循環,行循環;在每行內,進行列循環,這是第三層循環。在最內層列循環內,取出行列值,複製到新建的values列表內,很明顯,源數據有幾列,values列表就有幾個元素。我們例子中的excel文件有兩列,分別對應「角度」和DC值。所以在列循環結束後,我們將取得的數據保存到x_data1和y_data1這兩個列表中。

3.3 繪製圖像V1.0

第一個版本的功能很簡單,從excel中讀取數據,然後繪製成圖像。具體程序如下:

#!/usr/bin/python#-*- coding: utf-8 -*-import matplotlib.pyplot as pltimport xlrdfrom xlrd import open_workbookx_data=[]y_data=[]x_volte=[]temp=[]wb = open_workbook("my_data.xlsx")for s in wb.sheets(): print "Sheet:",s.name for row in range(s.nrows): print "the row is:",row values = [] for col in range(s.ncols): values.append(s.cell(row,col).value) print values x_data.append(values[0]) y_data.append(values[1]) plt.plot(x_data, y_data, "bo-",label=u"Phase curve",linewidth=1)plt.title(u"TR14 phase detector")plt.legend()plt.xlabel(u"input-deg")plt.ylabel(u"output-V")plt.show()print "over!"

程序簡單,顯示的效果如下:

做到這裡,一組數據的圖像已經完成,不過樣子很醜,我們會在後面的章節進行美化,並學習如何將多組數據展示到同一圖像中。

你可以在原課程中查看完整教程並下載代碼:Python實現從excel讀取數據並繪製成精美圖像

更多經典的編程練手項目:全部課程

微信關注公眾號[實驗樓],手機查看海量項目教程。


推薦閱讀:

Web開發必備工具箱
我們採訪了劍橋學生會主席,關於少兒編程他這麼說
有哪些可以獲取數據的網站?[大數據]
Python爬蟲實戰入門五:獲取JS動態內容—爬取今日頭條

TAG:Python | Python入门 | 编程 |