エクセルファイル（.xlsx）からヒストグラムを作成

#環境
macOS Cataina
10.15.7

python 3.6.2

#ソースコード

```2xy_hist.py
import matplotlib.pyplot as plt
import xlrd
import numpy
import matplotlib.ticker as tick # 目盛り操作に必要なライブラリを読み込み 
import sys

plt.rcParams["font.size"] = 14

if __name__ == '__main__':
    book = xlrd.open_workbook('2xy.xlsx')  # ブック名
    sheet1 = book.sheet_by_name('Sheet1') 


    X = []
    Y = []
    Z = []

##################シート読み込み#############                                               
    # セルを cell(行番号, 列番号) で指定（0から数える）                                         \
    for row in range(0, sheet1.nrows):
        valuex = sheet1.cell(row, 0).value
        if  valuex  != '':
            X.append(valuex)
    X = numpy.array(X)

    for row in range(0, sheet1.nrows):
        valuey = sheet1.cell(row, 1).value
        if  valuey  != '':
            Y.append(valuey)
    Y = numpy.array(Y)


#3講座目がある場合
#    for row in range(0, sheet1.nrows):
#        valuez = sheet1.cell(row, 2).value
#        if  valuez  != '':
#            Z.append(valuez)
#    Z = numpy.array(Z)

fig2, axes = plt.subplots(2, 2)

print(X)
print(Y)
print(Z)

#sys.exit()
#################xのヒストグラム############
#plt.hist(X, bins=20,color="0.3", range=(0,100))  
axes[0,0].hist(X, bins=20,color="0.3", range=(0,100))
axes[0,0].grid(linestyle="--",which="minor")
axes[0,0].grid(which='major',color='black',linestyle='--')
#axes[0,0].set_title('2x')
axes[0,0].set_xlabel('score')
axes[0,0].set_ylabel('frequency')  
axes[0,0].set_xlim(0,100)
axes[0,0].set_ylim(0,10)
axes[0,0].xaxis.set_minor_locator(tick.MultipleLocator(5)) 
axes[0,0].yaxis.set_minor_locator(tick.MultipleLocator(1))
muX = numpy.mean(X)
meX = numpy.median(X)
sigmaX = numpy.std(X) 
varianceX = numpy.var(X)
# 平均値の線
axes[0,0].axvline(muX, linewidth=2, color='k',label="average",linestyle='solid')
#中央値                                                                                                                    
axes[0,0].axvline(meX, linewidth=2, color='k',label="median",linestyle='dashdot')                                        
axes[0,0].legend(loc='upper right')
axes[0,0].text(0,10.1, r'''
2x,μ=%.2f, me=%.2f, σ=%.2f''' %(muX, meX, sigmaX))   


#plt.show()

#################yのヒストグラム############
#plt.subplot(2,2,3)
#plt.hist(Y, bins=20,color="0.3", range=(0,100))
axes[0,1].hist(Y, bins=20,color="0.3", range=(0,100))
axes[0,1].grid(linestyle="--",which="minor")
axes[0,1].grid(which='major',color='black',linestyle='--')
#axes[0,1].set_title('2y')
#axes[0,1].set_xlabel('score')
#axes[0,1].set_ylabel('frequency')
axes[0,1].set_xlim(0,100)
axes[0,1].set_ylim(0,10)
axes[0,1].xaxis.set_minor_locator(tick.MultipleLocator(5))
axes[0,1].yaxis.set_minor_locator(tick.MultipleLocator(1))
muY = numpy.mean(Y)
meY = numpy.median(Y)
sigmaY = numpy.std(Y)
varianceY = numpy.var(Y)
# 平均値の線  
axes[0,1].axvline(muY, linewidth=2, color='k',label="average",linestyle='solid')
#中央値
axes[0,1].axvline(meY, linewidth=2, color='k',label="median",linestyle='dashdot')
axes[0,1].legend(loc='upper right')
axes[0,1].text(0,10.1, r'''
2y,μ=%.2f, me=%.2f, σ=%.2f''' %(muY, meY, sigmaY))


#3講座目がある場合
##################zのヒストグラム############
#axes[1,0].hist(Z, bins=20,color="0.3", range=(0,100))
##plt.hist(Z, bins=20,color="0.3", range=(0,100))                                           
##sys.exit()                                                                                 
#axes[1,0].grid(linestyle="--",which="minor")
#axes[1,0].grid(which='major',color='black',linestyle='--')
##axes[1,0].set_title('2z')
#axes[1,0].set_xlabel('score')
#axes[1,0].set_ylabel('frequency')
#axes[1,0].set_xlim(0,100)
#axes[1,0].set_ylim(0,10)
#axes[1,0].xaxis.set_minor_locator(tick.MultipleLocator(5))
#axes[1,0].yaxis.set_minor_locator(tick.MultipleLocator(1))
#muZ = numpy.mean(Z)
#meZ = numpy.median(Z)
#sigmaZ = numpy.std(Z)
#varianceZ = numpy.var(Z)
# 平均値の線                                                                                                                                                               
#axes[1,0].axvline(muZ, linewidth=2, color='k',label="average",linestyle='solid')
#中央値                                                                                                                                                                    
#axes[1,0].axvline(meZ, linewidth=2, color='k',label="median",linestyle='dashdot')
#axes[1,0].legend(loc='upper right')
#axes[1,0].text(0,10.1, r'''                                                                                                                                                
#2z,μ=%.2f, me=%.2f, σ=%.2f''' %(muZ, meZ, sigmaZ))

axes[1,0].axis('off')

#################xyzのヒストグラム############                                                                                                          
Z = numpy.append(Z, X)
Z = numpy.append(Z, Y)
print(Z) # [1, 2, 3, 4, 5] 
axes[1,1].hist(Z, bins=20,color="0.3", range=(0,100))
axes[1,1].grid(linestyle="--",which="minor")
axes[1,1].grid(which='major',color='black',linestyle='--')
#axes[1,1].set_title('2xy')
axes[1,1].set_xlabel('score')
axes[1,1].set_ylabel('frequency')
axes[1,1].set_xlim(0,100)
#axes[1,1].xticks(range(5, 10))
axes[1,1].set_ylim(0,20)
axes[1,1].xaxis.set_minor_locator(tick.MultipleLocator(5))
axes[1,1].yaxis.set_minor_locator(tick.MultipleLocator(1))
muZ = numpy.mean(Z)
meZ = numpy.median(Z)
sigmaZ = numpy.std(Z)
varianceZ = numpy.var(Z)
# 平均値の線
axes[1,1].axvline(muZ, linewidth=2, color='k',label="average",linestyle='solid')
#中央値
axes[1,1].axvline(meZ, linewidth=2, color='k',label="median",linestyle='dashdot')
axes[1,1].legend(loc='upper right')
axes[1,1].text(0,20.1, r'''
2xy,μ=%.2f, me=%.2f, σ=%.2f''' %(muZ, meZ, sigmaZ))
plt.show()
```

完成しました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1101426/89d75d89-e0d2-b8eb-0886-0b91f8b8fdb4.png)