用excl匯入資料檔案並用matplotlib畫箱線圖和提琴圖
阿新 • • 發佈:2018-12-24
import matplotlib.pyplot as plt import xlrd import numpy as np import time one_time =time.time() plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤 plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號 data = xlrd.open_workbook(r"E:\工作中的檔案\20181119蘇煥_資料分析\11-18日全國各個櫃機的預留使用率分佈情況.xlsx") #開啟excel table = data.sheet_by_name("Sheet1")#讀sheet nrows = table.nrows #獲得行數(返回的是行列值中最大的值) columns = table.ncols print('行數是:',nrows,'列數是:',columns) # first_time = time.time() print('這是第一小段程式發生的時長:%d s'%(first_time-one_time)) result = [] for i in range(0,columns): result_ = [] for j in range(0,nrows): if table.row_values(j)[i]: #這個很重要,因為讀取的行數是最大值,於是會有一些空值進來,所以讀取的時候得把這些空值個篩選掉。 result_.append(table.row_values(j)[i]) step_number = np.where(np.array(result_,dtype=float)>1,1,np.array(result_,dtype=float)) result.append(np.array(step_number,dtype=float)) fig, axes = plt.subplots(nrows=1, ncols=2,constrained_layout=True) # plot violin plot axes[0].violinplot(result, showmeans=False, showmedians=True) axes[0].set_title('小提琴圖') # plot box plot axes[1].boxplot(result) axes[1].set_title('箱型圖') # adding horizontal grid lines for ax in axes: ax.yaxis.grid(True) #x座標軸的網格使用主刻度 ax.set_xticks([0.5*(y + 1) for y in range(len(result))]) # ax.set_xticks([1]) ax.set_xlabel('日期') ax.set_ylabel('預留預約量使用率') # add x-tick labels plt.setp(axes, xticks=[x for x in range(1,9)], xticklabels=['11日','12日','13日','14日','15日','16日','17日','18日']) plt.show()