
在上篇文章中介紹了matplotlib繪制直方圖的前五個參數,實際上直方圖一共有十幾個參數,剩下的參數利用這篇文章解釋清楚,讓大家能夠將如何繪制直方圖理解的透透的。
這個參數的含義也很直觀,底部的意思,指的是條形的底從哪里開始。這個參數接收標量和序列,或者None,默認為None,如果是標量,則所有條形的底都從同一個數值處開始,如果為序列,則可以指定每個條形的底不一致。
fig = plt.figure(figsize=(16,4)) pic1 = fig.add_subplot(131) plt.hist(data,bins = 10) plt.title("bottom默認None") pic2 = fig.add_subplot(132) plt.hist(data,bins = 10, bottom=10) # bottom=10,表示所有條形的底部從10開始,默認從0開始 plt.title("bottom=10") pic3 = fig.add_subplot(133) plt.hist(data,bins = 10, bottom=np.array([21, 20, 13, 17, 22, 32, 23, 15, 22, 15])) # bottom為序列,序列長度于條形的數量一致,表示每個條的底部從哪里開始 plt.title("bottom取值為序列");
上圖是當bottom參數不同取值時繪制出來不同的直方圖,第一幅圖和第二幅圖看起來長的一樣,但是仔細觀察下就能發現兩幅圖y軸的起始點時不一樣的,第一幅圖的起點時0.第二幅圖的起點是10,因為bottom參數設置的為10;而第三幅圖bottom的參數設置的序列,序列的長度和直方圖的組數一致,即每個條形的起始點都不同,具體設置哪種比較好,還是要看具體的業務需求哦。
histtype參數控制的時直方圖中條形的展現方式,它接收的參數是固定的字符串,其中常見的是以下兩種形式:
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10, histtype = "bar") plt.title(' histtype = "bar"') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10, histtype = "step") # histtype默認參數為”bar“,即條形,可以進行指定 plt.title(' histtype = "step"');
如果需要將折線圖和直方圖繪制到一副圖中,可以考慮對條形的形式進行設置。
align參數控制的是條形的位置,能夠接收的參數也是指定的字符串,通常大家都用默認值"mid",即中間,這樣直方圖中的條形會居于前后臨界點的中間位置,是最常見的一種:
fig = plt.figure(figsize=(16,4)) pic1 = fig.add_subplot(131) plt.hist(data,bins = 10, align = "left") plt.xticks([150. , 152.9, 155.8, 158.7, 161.6, 164.5, 167.4, 170.3, 173.2,176.1, 179. ],rotation = 30) plt.title("align ='left'") pic2 = fig.add_subplot(132) plt.hist(data,bins = 10, align = "right") plt.xticks([150. , 152.9, 155.8, 158.7, 161.6, 164.5, 167.4, 170.3, 173.2,176.1, 179. ],rotation = 30) plt.title("align ='right'") pic3 = fig.add_subplot(133) plt.hist(data,bins = 10, align = "mid") plt.xticks([150. , 152.9, 155.8, 158.7, 161.6, 164.5, 167.4, 170.3, 173.2,176.1, 179. ],rotation = 30) plt.title("align ='mid'");
由于原數據和分箱規則沒有變化,所以三個直方圖很相近,區別在于x軸上,這里為了能直觀的看出區別,特意將每組的臨界值添加到了x軸,仔細查看能夠看出只有最后一個圖才是我們常見的直方圖,前兩個條形的位置都有偏移。
對條形圖比較熟悉的朋友可能對這個參數并不陌生,它是控制條形方向的參數,接收的是特定的字符,即條形的方向是垂直的還是水平的,一般默認繪制的都是垂直方向的,如果需要橫向的直方圖,直接設置這個參數就好。它接收的參數是指定的字符串,表明條形方向:
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10) #默認條形方向為垂直方向 plt.title('orientation默認"vertical"') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10,orientation = 'horizontal') # orientation = 'horizontal'表示條形為水平方向 plt.title('orientation = "horizontal"');
參數中可選的兩個字符即是垂直還是水平。
從字面上看,這個參數是和寬度有關的,事實也的確是這樣。這個參數可以設置條形的寬度,接收數值,但是它設置的寬度是相對于默認寬度而言的,重新設置的寬度是原寬度的幾分之幾,我們具體看一下代碼:
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10) #rwidth控制條形的相對寬度,不進行指定,自動計算 plt.title('rwidth默認"None"') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10,rwidth=0.8) # 指定條形的相對寬度 plt.title('rwidth=0.8');
如果不進行設置,直方圖的各個條形之間是沒有空隙的,當我將rwidth設置成0.8之后,條形的寬度就只有原寬度的80%,條形之間也會出現縫隙。
log參數控制是否將刻度設置成對數刻度,接收布爾值,默認為False,進行普通刻度,一旦設置為True:
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist(data,bins = 10) plt.title('log默認"False"') pic2 = fig.add_subplot(122) plt.hist(data,bins = 10,log=True) # 直方圖軸將設置為對數刻度。 plt.title('log=True"');
設置成對數刻度后,雖然分組情況沒有變,但是分布狀況還是發生了變化,如果設置了該參數,最好在標題或其他部分標注提示一下。
這個參數可以說是相當熟悉,很多函數中都有,表示對圖形的顏色進行設置,沒錯的確是設置顏色,想起我們還有一個最開始的參數沒有講解,就在這里和color一起講解了。
目前我們只有一組數據,現在呢假設有了兩個學校學生的身高數據,喏,這就是第二個學校的學生身高了:
data1 = np.random.randint(150,180,200) data1
輸出結果:
array([164, 171, 172, 161, 171, 175, 161, 170, 159, 163, 154, 162, 156, 158, 160, 156, 163, 167, 170, 168, 163, 171, 174, 161, 156, 167, 165, 169, 162, 176, 167, 157, 157, 169, 160, 177, 162, 154, 163, 168, 155, 177, 151, 155, 179, 166, 170, 168, 158, 167, 156, 170, 163, 157, 172, 169, 156, 171, 155, 160, 177, 164, 157, 160, 173, 175, 164, 168, 171, 158, 163, 162, 167, 167, 169, 155, 175, 171, 162, 174, 165, 179, 167, 179, 168, 157, 151, 151, 171, 170, 168, 165, 167, 179, 153, 177, 165, 155, 153, 157, 162, 167, 173, 161, 171, 159, 165, 152, 160, 172, 154, 157, 176, 152, 171, 161, 169, 154, 171, 150, 158, 164, 150, 170, 153, 162, 150, 174, 150, 176, 167, 171, 164, 170, 171, 163, 162, 164, 174, 157, 179, 166, 150, 170, 166, 161, 155, 175, 163, 156, 152, 159, 168, 158, 176, 159, 158, 169, 155, 166, 151, 163, 177, 154, 170, 152, 167, 172, 170, 163, 161, 177, 164, 160, 157, 167, 163, 177, 169, 162, 166, 158, 156, 168, 169, 168, 159, 159, 154, 169, 168, 169, 156, 165, 173, 175, 169, 156, 158, 154])
到這里是不是有點明白了,直方圖不止可以對一組數據進行繪圖,多組數據也是可以的,參數x可以接收多組數據,如果是多組數據需要將多組數據打包到一起作為一個整體傳給參數x:
fig = plt.figure(figsize=(16,4)) pic1 = fig.add_subplot(131) plt.hist(data,bins = 10) plt.title("color默認None") pic2 = fig.add_subplot(132) plt.hist(data,bins = 10, color="r") # 設置顏色為紅色 plt.title("color="r"") pic3 = fig.add_subplot(133) plt.hist([data,data1],bins = 10, color=["c","orange"]) # color取值為序列,每個數據集對應一種顏色,color序列的長度與數據集個數一致 plt.title("color取值為序列");
能夠看到,如果只有一組數據,color參數也就只接收一個顏色指定,如果是多組數據,可以對每個數據集的顏色進行指定,具體需要注意的點已經在代碼中備注了哦。
label參數也不是陌生的參數,是對標簽的設定,接收的是字符串,并沒有什么特殊,但是需要注意的是如果設置了這個參數,記得調用plt.lenged()顯示圖例,如果不調用即使設置了標簽也不能作為圖例顯示在圖形中。而顯示圖例除了直接在直方圖函數中設置label參數外,還可以在plt.lenged()中設置,具體的區別還是看代碼吧:
fig = plt.figure(figsize=(11,4)) pic1 = fig.add_subplot(121) plt.hist([data,data1],bins = 10, color=["c","orange"],label=["data","data1"]) plt.legend() plt.title('hist函數中設置label參數') pic2 = fig.add_subplot(122) plt.hist([data,data1],bins = 10, color=["c","orange"]) plt.legend(["data","data1"]) plt.title('legend函數中設置label參數');
效果是一樣的。
這個參數的字面意思也很直觀,表示是否要堆疊,接收布爾值。需要注意的是如果繪圖只用了一個數據集,那么這個參數無論設置成什么都沒有影響,如果要堆疊至少需要兩個數據集才能顯示出區別:
fig = plt.figure(figsize=(9,4)) pic1 = fig.add_subplot(121) plt.hist([data,data1],stacked=False) #默認多組數據并列排列 plt.title('stacked默認"False"') pic2 = fig.add_subplot(122) plt.hist([data,data1],stacked=True) #多組數據彼此堆疊 plt.title('stacked=True"');
區別是不是很明顯了,堆疊的意思也容易理解了對不對?
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24