第一次用matplotlib画图,记录一下自己的代码…
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df=pd.read_csv(filename,index_col=0)
read_csv()读取逗号分隔的文件,index_col=0将第一列变成索引,默认情况下将第一行作为表头
df=df.T #将df转置
画一个图中包含多个子图
代码如下:
def make_picture(a_list):
df.loc['16_19_sum']=df.loc['16':'19',:].apply(lambda x :x.sum())
#行求和,划重点!!索引是object类型
fig=plt.figure(figsize=(15,8))
#设置整个幕布的大小
fig.suptitle(i,x=0.5,y=0.95)
#设置总标题,(x,y)的值确定标题的位置
for i in a_list:
#画子图1
ax1=fig.add_axes([0.12,0.52,0.5,0.4])
#设置子图位置和大小[bottom,left,width,height](底坐标,左坐标,宽度,高度)
df=df_knownf[i]
df.columns=['Indel','SNP']
df.plot(ax=ax1,color=['red','blue'],kind='bar',figsize=(10,5))
#kind='bar',画柱状图
#figsize,设置图片大小
ax1.set_title('Known',x=0.5,y=0.88)
#设置子图的标题
ax1.set_xticks([])
#将x轴刻度值隐藏
ax1.set_ylim(0,0.82)
#设置y轴上下限
ax1.set_xlim(-0.5,19.5)
#设置x轴上下限
#画子图2
ax2=fig.add_axes([0.12,0.1,0.5,0.4])
df1=df_novelf[i]
df1.columns=['Indel','SNP']
df1.plot(ax=ax2,color=['red','blue'],kind='bar',figsize=(10,5))
ax2.set_title('Novel',x=0.5,y=0.88)
ax2.set_xlabel('Mutation allele count(MAC)',fontsize=10,fontweight='heavy')
#设置x轴坐标,fontsize是字体大小,fontweight是字体是否加粗
ax2.set_ylabel('Fraction in each variant type',x=0,y=1,fontsize=10,fontweight='heavy')
ax2.set_ylim(0,0.82)
plt.xticks(rotation=0)
#将x轴的值旋转90度
ax2.set_xlim(-0.5,19.5)
#画子图3
ax3=fig.add_axes([0.7,0.52,0.2,0.4])
df=df_known[i]
df.columns=['Indel','SNP']
df.loc[['16_19_sum','20'],:].plot(ax=ax3,color=['red','blue'],kind='bar',xticks=[],figsize=(5,5))
ax3.set_title('Known',x=0.5,y=0.88)
ax3.set_ylabel('Number of Variant(thousand)',x=0,y=0.5,fontsize=10,fontweight='heavy')
plt.yticks([i*(10**5) for i in range(0,8)],[i*(10**2) for i in range(0,8)])
#替换y轴原有的刻度,plt.yticks([原刻度],[更改后的刻度])
ax3.set_xticks([])
#画子图4
ax4=fig.add_axes([0.7,0.1,0.2,0.4])
df1=df_novel[i]
df1.columns=['Indel','SNP']
df1.loc[['16_19_sum','20'],:].plot(ax=ax4,color=['red','blue'],kind='bar',figsize=(5,5),use_index=False)
ax4.set_title('Novel',x=0.5,y=0.88)
ax4.set_ylabel('Number of Variant',x=0,y=0.5,fontsize=10,fontweight='heavy')
ax4.set_xlabel('Mutation allele count(MAC)',fontsize=10,fontweight='heavy')
plt.xticks([0,1],['16-19',20],rotation=0)
plt.yticks(np.linspace(0,500,6))
#np.linspace(0,500,6),将区间[0,500]等距离取6个数(0,100,200,300,400,500)
plt.show()
a_list=[‘Jakun’,‘Bateq’,‘Temiar’]
make_20_picture(a_list)