首頁 > 後端開發 > Python教學 > 如何利用Python繪製學術論文圖表方法

如何利用Python繪製學術論文圖表方法

高洛峰
發布: 2017-03-08 09:41:07
原創
2171 人瀏覽過

論文中圖表形式多樣,常用的處理工具有excel、MATLAB以及Python等,excel自處理的方法有兩個缺陷:

1.當數據較多時,容易出現excel「翻白眼」的現象;

2.需要使用subplot功能或批次處理時,使用MATLAB或Python更為方便;

#3.excel處理的圖在美觀程度上較論文圖表標準有一定的距離。比較MATLAB以及Python的plot功能,從圖的美觀角度出發,Python稍佔優勢,下文講簡要介紹將excel中的資料提取到Python中並利用Python的matplotlib庫製圖的過程。

 一.如何將Excel中的資料匯入Python中:

此部分主要介紹如何將Excel中的資料導入python中(原始資料可能在.txt或.out檔案中,且資料較為繁雜,可以先利用MATLAB或python將資料處理存入Excel中,包含一些簡單的計算、排列等,以便於之後的繪圖,或直接利用python提取.txt中數據,在此不做詳細介紹),主要方法是利用python的xlrd庫,流程如下:

# 导入xlrd库
import xlrd
# 读取指定Excel文件(此处为excel_dir)中的数据
data=xlrd.open_workbook(excel_dir)
# 读取指定data中某sheet(此处命名为sheetname)中的数据
table=data.sheet_by_name(sheetname)
#读取table中某一列的数据
needs=table.col_values(0)
登入後複製

 其中有幾個需要說明的點:

1.excel_dir和sheetname如何定義?

excel_dir應寫成字串的格式(即' '或" "),最終應以.xls或.xlsx等Excel的後綴結尾,例如讀取Administrator桌面上的名result.xls的檔案可寫成:

excel_dir = 'C:\Users\Administrator\Desktop\result.xls'data=xlrd.open_workbook(excel_dir)
登入後複製

sheetname定義的方法同上,除此之外sheet還有透過索引順序的讀取方法:

table = data.sheets()[0]       #通过索引顺序获取
table = data.sheet_by_index(0) #通过索引顺序获取
登入後複製

#2.如何讀取某一單元格或某行的資料?

流程中所示為讀取某sheet中某列的數據,同理某行數據為:

table.col_values(i)
登入後複製

讀取某單元格資料指令為:

table.cell(i,j).value
登入後複製

 3.讀取某行或某列資料時,資料的範圍是什麼?

舉例:當某sheet中表格如下時,會讀取4×3表格中的資料。

 如何利用Python繪製學術論文圖表方法

#即若想讀取B列數據,程式碼要寫為

table.col_values(1)
登入後複製

注意:python是從0開始計數的,故column number應為1,此時計入的資訊為:[u'' ,u'',4,u'']

且注意table的維度由各個sheet決定,及若某excel表格有多個sheet,可能出現list長度不同的情況。

4.如果想取某一列2-5行如何做呢?

table.col_values(i)[1:5]
登入後複製

5.若想取到最後一個數字,該如何寫程式碼?

由於各行/列的資料型態可能不同,可能會出現第一列僅4個數字,而第二列有9個數字,而最多的一列有100個數字等類似的情況,若直接用取整列的指令,會使list中摻入u'',導致下一步的繪圖出錯,此時可以使用如下方法:

a_col=table.col_values(i)
a=a_col[0,a_col.index(u'')]
登入後複製

但需注意,此指令不能對控制行數的列使用,否則也會報錯,可編寫其他判斷語句進行鑑別是否使用該指令。

 

二.如何利用Python進行繪圖:

這裡介紹利用matplotlib函式庫進行繪圖的方法,首先應匯入matplotlib函式庫:

#
import numpy as npimport matplotlib.pyplot as plt
登入後複製

##繪圖方法很簡單,大致流程如下:

# 绘图命令,1为图号,并设置figsize
fig_drift= plt.figure(1,figsize=(12,4))
# 设置数据在x轴和y轴的坐标,以及颜色、标签等属性,此处用了两组数据
plt.plot(drift[0], story,"g-",label='$Damped$')
plt.plot(drift[1], story,"r-.",label='$Undamped$')
# 设置x轴和y轴的标签
plt.xlabel('Drift')
plt.ylabel('Storey')
# 选择显示数据组标签
plt.legend()
# 设置x轴和y轴的间隔及范围
plt.xticks((0.000,0.005,0.010,0.015))
plt.yticks(range(1,5,1))
# 设置图名
plt.title('minor')
登入後複製


#其中需要說明的幾點:

1.如何繪製多圖?

很簡單,只要在設定了圖號名稱之後,插入:

ax2 = plt.subplot(132)
plt.sca(ax2)
登入後複製

后面的命令与前述一致,值得一提的是,plt.subplot(131)指的是绘制一个含有1×3子图的图,且ax1代表的是第2张图,而plt.sca(ax2)表示选择该子图。

2.设置x轴、y轴以及其他命令如何判断是赋予哪张图的属性呢?

matplotlib会直接将该属性赋予上一plot对象。

3.如何绘制散点图?

把pl.plot(x, y)改成pl.plot(x, y, 'o')即可。

4.其他一些设置参数:

# 设置x轴和y轴的上下限
pl.xlim(i, j)
pl.ylim(m,n)
# 显示图
pl.show()
# 保存图,自动存为png格式
plt.savefig(dir+name.png,dpi=600)
登入後複製

除此之外还支持设置x轴(y轴)坐标显示,绘制饼状图、直方图等功能,在此不再一一介绍。

 

三.说点题外话:

曾经看过一句话:“世界上没有烂语言,只有写语言的烂人”。

每种语言各自有其优势,也有其劣势,在此不做过多评价。如何利用语言实现绘图或达到更多目标,在于我们如何选择。恰到好处地使用for或def、class等语句,能使一段代码如虎添翼,写在这里,作为给自己的提醒:遇到问题先明确方法、形成体系再进入编写,不要盲目地将看似正确的语言进行强行拼凑,返工率极高。

更多如何利用Python繪製學術論文圖表方法相关文章请关注PHP中文网!

 


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板