Matplotlib

数据读取、写入、保存

  1. 第一行导入集成工具包,如pyplot(画图)、numpy(矩阵分析)、xlrd(读取Excel文件)、xlwt(创建、写入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表,参数0打开sheet1,参数1打开sheet2...:

table=data.sheet_by_index(0)

  • 指定读取sheet表中某一整行或某一整列数据,参数0读取第一行(列),参数2读取第二行(列)...:

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

  • 指定读取某一单元格内的数据,例如读取第5行第8列所在单元格内的数据:

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

  • 获取打开的sheet表中有多少行或多少列数据:

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

  1. Excel文件的创建和写入
  • 使用xlwt创建名为ov2的Excel文件,注意后缀格式为.xls,不支持.xlsx格式:

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

  • 在已创建的Excel表ov2.xls中新建sheet1:

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

  • 向已创建的sheet表的第a行第i列写入数据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基本函数


画图参数

  1. plt.plot线图
  • label图例内容
  • linewidth粗细
  • color颜色,参数可为单字母'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列数据,将这10列数据依次放入列表y中,然后用plt.violinplot函数做成小提琴图,小提琴图宽度表示概率大小,showmeans表示是否显示平均值,showmedians表示是否显示中位数,showextrema=False表示是否显示类似error bar的极端线,下面的for循环设定了小提琴图的面颜色、边框颜色及透明度:

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个角度数据在极坐标中以散点的形式显示,通过for循环将该列每一项数据都除180再乘pi,转化为以pi表示的角度,依次存入Theta列表中,使用projection='polar'声明生成极坐标图,再用scatter函数在生成的极坐标系中作图,其中Theta为角度数据列表,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',用数字表示不需加单引号)
  • fontsize图例字体大小
  • frameon=False去掉图例边框
  • edgecolor='blue'图例边框颜色
  • facecolor='green'图例背景颜色
  • title='figure 1 legend'图例标题

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

  1. **

数据读取

你可能感兴趣的:(Matplotlib)