Matplotlib

數(shù)據(jù)讀取、寫入、保存

  1. 第一行導入集成工具包,如pyplot(畫圖)、numpy(矩陣分析)、xlrd(讀取Excel文件)、xlwt(創(chuàng)建、寫入Excel文件):

import matplotlib.pyplot as plt
import numpy as np
import xlrd
import xlwt

  1. 設定保存圖片尺寸和分辨率
    生成20×9.76英寸,dpi為960的圖片,圖片分辨率為20×960-9.76×960=19200×9389.12

plt.figure(figsize=(20,9.76),dpi=960)

  1. Excel文件的讀取
  • 打開要讀取的Excel文件:

data=xlrd.open_workbook('C:/Users/th/Desktop/ov1.xlsx')

  • 指定打開哪個sheet表,參數(shù)0打開sheet1,參數(shù)1打開sheet2...:

table=data.sheet_by_index(0)

  • 指定讀取sheet表中某一整行或某一整列數(shù)據(jù),參數(shù)0讀取第一行(列),參數(shù)2讀取第二行(列)...:

row=table.row_values(0)
col=table.col_values(0)

  • 指定讀取某一單元格內的數(shù)據(jù),例如讀取第5行第8列所在單元格內的數(shù)據(jù):

b=table.cell(5,8).value

  • 獲取打開的sheet表中有多少行或多少列數(shù)據(jù):

i=len(row)
j=len(col)

  1. Excel文件的創(chuàng)建和寫入
  • 使用xlwt創(chuàng)建名為ov2的Excel文件,注意后綴格式為.xls,不支持.xlsx格式:

book=xlwt.Workbook('C:/Users/th/Desktop/ov2.xls')

  • 在已創(chuàng)建的Excel表ov2.xls中新建sheet1:

sheet=book.add_sheet('sheet1',cell_overwrite_ok=True)

  • 向已創(chuàng)建的sheet表的第a行第i列寫入數(shù)據(jù)b:

sheet.write(a,i,b)

  1. 坐標軸設置

plt.axis([0.5,j+.5,-250,250])
plt.xticks([2,5,8,11,14],['217V','218H','219K','220Y','221L'],FontProperties='Times New Roman',fontsize=15)
plt.yticks(np.arange(-250,300,50),FontProperties='Times New Roman',fontsize=15)
plt.xlabel('Residues',FontProperties='Times New Roman',fontsize=15)
plt.ylabel('Dihedral(°)',FontProperties='Times New Roman',fontsize=15)

  1. 圖片的保存

plt.savefig('C:/Users/th/Desktop/p2.jpg',dpi=960)


Python基本函數(shù)


畫圖參數(shù)

  1. plt.plot線圖
  • label圖例內容
  • linewidth粗細
  • color顏色,參數(shù)可為單字母'g'、單詞'green'、十六進制顏色代碼,如#191970
  • alpha透明度,0~1,越低顏色越淺

plt.plot(x,y,label='300k-loop1',linewidth=2,color='g',alpha=0.5)
plt.plot([1,2,3],[5,7,4],label='300k-loop1',linewidth=2,color='g',alpha=0.5)

  1. plt.violinplot小提琴圖
    Excel表中有10列數(shù)據(jù),將這10列數(shù)據(jù)依次放入列表y中,然后用plt.violinplot函數(shù)做成小提琴圖,小提琴圖寬度表示概率大小,showmeans表示是否顯示平均值,showmedians表示是否顯示中位數(shù),showextrema=False表示是否顯示類似error bar的極端線,下面的for循環(huán)設定了小提琴圖的面顏色、邊框顏色及透明度:

y=[]
for i in range(0,10):
col=table.col_values(i)
y.append(col)
parts=plt.violinplot(y,showmeans=False,showmedians=False,showextrema=False)
for pc in parts['bodies']:
pc.set_facecolor('r')
pc.set_edgecolor('r')
pc.set_alpha(0.5)

  1. 極坐標散點圖
    將Excel表中第20列的500個角度數(shù)據(jù)在極坐標中以散點的形式顯示,通過for循環(huán)將該列每一項數(shù)據(jù)都除180再乘pi,轉化為以pi表示的角度,依次存入Theta列表中,使用projection='polar'聲明生成極坐標圖,再用scatter函數(shù)在生成的極坐標系中作圖,其中Theta為角度數(shù)據(jù)列表,r1為散點距離極坐標圓心的距離,s=500設定散點大小,color='r'設定散點顏色,alpha=0.3設定散點透明度,最后通過plt.axis([-np.pi,np.pi,0,3.5])設定極坐標系角度范圍為-180°+180°(默認為0°360°)和半徑,通過ax.set_theta_zero_location('N')設定0°位置('N'北,'NW'西北,'W'西,'SW'西南,'S'南,'SE'東南,'E'東,'NE'東北),通過ax.set_theta_direction(-1)設定順時針(-1)還是逆時針(1),通過rlim設定比較范圍,通過rgrids設定網格

r=np.ones(500)
Theta=[]
for i in range(0,500):
r1=1r
theta=(table.cell(i,21).value)/180
np.pi
Theta.append(theta)
ax=plt.subplot(111,projection='polar')
ax.scatter(Theta,r1,s=500,color='r',alpha=0.3)
plt.axis([-np.pi,np.pi,0,3.5])
plt.xticks(np.arange(-np.pi,np.pi,45/180*np.pi),('-180°','-135°','-90°','-45°','0°','45°','90°','135°',''),FontProperties='Times New Roman',fontsize=15)
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)
ax.set_rlim(0,3.5)
ax.set_rgrids(np.arange(0,3.5,1),('','χ1','χ2','χ3'),FontProperties='Times New Roman',fontsize=15)

  1. 圖中標記線
  • 在圖中標記y=3.5的直線(h表示horizontal,橫):

plt.axhline(3.5,linewidth=1,color='r')

  • 在圖中標記x=3.5的直線(v表示vertical,豎):

plt.axvline(3.5,linewidth=1,color='r')

  • 在圖中畫x=3.5,y軸1~2范圍的線段:

plt.axvline(3.5,ymin=1,ymax=2,linewidth=1,color='r')

  • 在圖中畫一段陰影:

plt.axvspan(3.5,linewidth=1,color='r')

  1. 圖例legend
  • loc圖例位置(0:'best',1:'upper right',2:'upper left',3:'lower left',4:'lower right',5:'right',6:'center left',7:'center right',8:'lower center',9:'upper center',10:'center',用數(shù)字表示不需加單引號)
  • fontsize圖例字體大小
  • frameon=False去掉圖例邊框
  • edgecolor='blue'圖例邊框顏色
  • facecolor='green'圖例背景顏色
  • title='figure 1 legend'圖例標題

plt.legend(loc='lower left',fontsize=15)

  1. **

數(shù)據(jù)讀取

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容