您好,登錄后才能下訂單哦!
小編給大家分享一下Python中怎么用Matplotlib創建柱狀圖,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
如何用Matplotlib創建柱狀圖。
import numpy as np import matplotlib.pyplot as plt %matplotlib inline plt.style.use("ggplot")
柱狀圖(bar chart): 用長方形(柱子)的長度表示數值的統計圖表,又稱為條形圖。柱狀圖常用來對比兩個以上的數值,適用于較小的數據集。
Matplotlib創建柱狀圖的接口:bar(x, height, width, bottom, align, color)
x: 柱子的x軸坐標
height: 柱子高度,y軸坐標
width: 柱子寬度,默認0.8
bottom: 柱子底部的y軸坐標,默認為0
align: 柱子與x軸坐標的對齊方式,默認'center'
color: 柱子顏色
orientation: 柱子方向,'horizontal' or 'vertical'
bar()默認創建垂直柱狀圖,barh()可創建水平柱狀圖,原理基本一致。
# 虛擬數據 x = ["A", "B", "C", "D", "E", "F", "G", "H"] y = [150, 85.2, 65.2, 85, 45, 120, 51, 64] # 柱狀圖和散點圖不同,散點圖的(x,y)均為數值變量 # 柱狀圖的x軸顯示分類變量,有兩種處理方式 # 方式1:自己創建x軸坐標,并提供對應的標簽 # 方式2:讓Matplotlib自動完成映射 # 方式1 # xticks = np.arange(len(x)) # 每根柱子的x軸坐標 # xlabels = x # 每根柱子的標簽 # fig, ax = plt.subplots(figsize=(10, 7)) # ax.bar(x=xticks, height=y, tick_label=xlabels) # 方式2(推薦) fig, ax = plt.subplots(figsize=(10, 7)) ax.bar(x=x, height=y) ax.set_title("Simple Bar Plot", fontsize=15)
Matplotlib創建圖表的優勢在于,用戶可以定制每一個細節,接下來調整柱狀圖的樣式,包括改變柱子的寬度,對齊方式和顏色,以及如何把數值添加到圖表中。
x = ["A", "B", "C", "D", "E", "F", "G", "H"] y = [150, 85.2, 65.2, 85, 45, 120, 51, 64] fig, ax = plt.subplots(figsize=(10, 7)) ax.bar( x=x, # Matplotlib自動將非數值變量轉化為x軸坐標 height=y, # 柱子高度,y軸坐標 width=0.6, # 柱子寬度,默認0.8,兩根柱子中心的距離默認為1.0 align="center", # 柱子的對齊方式,'center' or 'edge' color="grey", # 柱子顏色 edgecolor="red", # 柱子邊框的顏色 linewidth=2.0 # 柱子邊框線的大小 ) ax.set_title("Adjust Styles of Bar plot", fontsize=15) # 一個常見的場景是:每根柱子上方添加數值標簽 # 步驟: # 1. 準備要添加的標簽和坐標 # 2. 調用ax.annotate()將文本添加到圖表 # 3. 調整樣式,例如標簽大小,顏色和對齊方式 xticks = ax.get_xticks() for i in range(len(y)): xy = (xticks[i], y[i] * 1.03) s = str(y[i]) ax.annotate( s=s, # 要添加的文本 xy=xy, # 將文本添加到哪個位置 fontsize=12, # 標簽大小 color="blue", # 標簽顏色 ha="center", # 水平對齊 va="baseline">
有時候想在同一根柱子上顯示兩個不同的數值,即所謂堆積柱狀圖(stacked bar chart)。
假設一個場景,有6家門店,每家門店都銷售三種產品,用堆積柱狀圖顯示每家門店三種產品的銷量。
shops = ["A", "B", "C", "D", "E", "F"] sales_product_1 = [100, 85, 56, 42, 72, 15] sales_product_2 = [50, 120, 65, 85, 25, 55] sales_product_3 = [20, 35, 45, 27, 55, 65] fig, ax = plt.subplots(figsize=(10, 7)) # 先創建一根柱子,顯示第一種產品的銷量 ax.bar(shops, sales_product_1, color="red", label="Product_1") # 第二根柱子“堆積”在第一根柱子上方,通過'bottom'調整,顯示第二種產品的銷量 ax.bar(shops, sales_product_2, color="blue", bottom=sales_product_1, label="Product_2") # 第三根柱子“堆積”在第二根柱子上方,通過'bottom'調整,顯示第三種產品的銷量 ax.bar(shops, sales_product_3, color="green", bottom=np.array(sales_product_2) + np.array(sales_product_1), label="Product_3") ax.set_title("Stacked Bar plot", fontsize=15) ax.set_xlabel("Shops") ax.set_ylabel("Product Sales") ax.legend()
分組柱狀圖的原理跟堆積柱狀圖類似,但柱子不再是堆疊在一起,而是在相同的X軸標簽上分成幾根更窄的柱子,這些柱子都屬于同一個組。
沿用上面的案例。
shops = ["A", "B", "C", "D", "E", "F"] sales_product_1 = [100, 85, 56, 42, 72, 15] sales_product_2 = [50, 120, 65, 85, 25, 55] sales_product_3 = [20, 35, 45, 27, 55, 65] # 創建分組柱狀圖,需要自己控制x軸坐標 xticks = np.arange(len(shops)) fig, ax = plt.subplots(figsize=(10, 7)) # 所有門店第一種產品的銷量,注意控制柱子的寬度,這里選擇0.25 ax.bar(xticks, sales_product_1, width=0.25, label="Product_1", color="red") # 所有門店第二種產品的銷量,通過微調x軸坐標來調整新增柱子的位置 ax.bar(xticks + 0.25, sales_product_2, width=0.25, label="Product_2", color="blue") # 所有門店第三種產品的銷量,繼續微調x軸坐標調整新增柱子的位置 ax.bar(xticks + 0.5, sales_product_3, width=0.25, label="Product_3", color="green") ax.set_title("Grouped Bar plot", fontsize=15) ax.set_xlabel("Shops") ax.set_ylabel("Product Sales") ax.legend() # 最后調整x軸標簽的位置 ax.set_xticks(xticks + 0.25) ax.set_xticklabels(shops)
以上是“Python中怎么用Matplotlib創建柱狀圖”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。