最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

matplotlib bar()實現(xiàn)多組數(shù)據(jù)并列柱狀圖通用簡便創(chuàng)建方法

 更新時間:2021年02月24日 11:12:29   作者:mighty13  
這篇文章主要介紹了matplotlib bar()實現(xiàn)多組數(shù)據(jù)并列柱狀圖通用簡便創(chuàng)建方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在使用柱狀圖時,經(jīng)常遇到需要多組數(shù)據(jù)進(jìn)行比較的情況。
繪制單個數(shù)據(jù)系列的柱形圖比較簡單,多組數(shù)據(jù)柱狀圖繪制的關(guān)鍵有三點:

  • 多次調(diào)用bar()函數(shù)即可在同一子圖中繪制多組柱形圖。
  • 為了防止柱子重疊,每個柱子在x軸上的位置需要依次遞增,如果柱子緊挨,這個距離即柱子寬度。
  • 為了使刻度標(biāo)簽居中,需要調(diào)整x軸刻度標(biāo)簽的位置。

由上述可知,多組數(shù)據(jù)并列柱狀圖需要計算柱子x軸上的位置和x軸刻度標(biāo)簽。
因此,有兩種實現(xiàn)方案:

  • x軸刻度標(biāo)簽位置固定,根據(jù)x軸刻度計算每個柱子的寬度
  • 每個柱子的寬度固定,計算x軸刻度標(biāo)簽位置,使之居中

下面使用第一種方法演示兩組數(shù)據(jù)、三組數(shù)據(jù)、四組數(shù)據(jù)的并列柱狀圖。
使用方法一、方法二演示通用多組并列柱狀圖的創(chuàng)建方法。

兩組數(shù)據(jù)、三組數(shù)據(jù)、四組數(shù)據(jù)的并列柱狀圖

在這里插入圖片描述

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=(13, 4))
# 構(gòu)造x軸刻度標(biāo)簽、數(shù)據(jù)
labels = ['G1', 'G2', 'G3', 'G4', 'G5']
first = [20, 34, 30, 35, 27]
second = [25, 32, 34, 20, 25]
third = [21, 31, 37, 21, 28]
fourth = [26, 31, 35, 27, 21]

# 兩組數(shù)據(jù)
plt.subplot(131)
x = np.arange(len(labels)) # x軸刻度標(biāo)簽位置
width = 0.25 # 柱子的寬度
# 計算每個柱子在x軸上的位置,保證x軸刻度標(biāo)簽居中
# x - width/2,x + width/2即每組數(shù)據(jù)在x軸上的位置
plt.bar(x - width/2, first, width, label='1')
plt.bar(x + width/2, second, width, label='2')
plt.ylabel('Scores')
plt.title('2 datasets')
# x軸刻度標(biāo)簽位置不進(jìn)行計算
plt.xticks(x, labels=labels)
plt.legend()
# 三組數(shù)據(jù)
plt.subplot(132)
x = np.arange(len(labels)) # x軸刻度標(biāo)簽位置
width = 0.25 # 柱子的寬度
# 計算每個柱子在x軸上的位置,保證x軸刻度標(biāo)簽居中
# x - width,x, x + width即每組數(shù)據(jù)在x軸上的位置
plt.bar(x - width, first, width, label='1')
plt.bar(x, second, width, label='2')
plt.bar(x + width, third, width, label='3')
plt.ylabel('Scores')
plt.title('3 datasets')
# x軸刻度標(biāo)簽位置不進(jìn)行計算
plt.xticks(x, labels=labels)
plt.legend()
# 四組數(shù)據(jù)
plt.subplot(133)
x = np.arange(len(labels)) # x軸刻度標(biāo)簽位置
width = 0.2 # 柱子的寬度
# 計算每個柱子在x軸上的位置,保證x軸刻度標(biāo)簽居中
plt.bar(x - 1.5*width, first, width, label='1')
plt.bar(x - 0.5*width, second, width, label='2')
plt.bar(x + 0.5*width, third, width, label='3')
plt.bar(x + 1.5*width, fourth, width, label='4')
plt.ylabel('Scores')
plt.title('4 datasets')
# x軸刻度標(biāo)簽位置不進(jìn)行計算
plt.xticks(x, labels=labels)
plt.legend()

plt.show()

通用多組并列柱狀圖的簡便創(chuàng)建方法

上面的示例比較簡易,有一些問題沒有考慮。為了便于重復(fù)使用,下面的通用方法可調(diào)整x軸標(biāo)簽刻度步長、每組柱子的總寬度、每組柱子之間的間隙、組與組之間的間隙。

在這里插入圖片描述

方法一

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

label = ['G1', 'G2', 'G3', 'G4', 'G5']
first = [20, 34, 30, 35, 27]
second = [25, 32, 34, 20, 25]
third = [21, 31, 37, 21, 28]
fourth = [26, 31, 35, 27, 21]
data = [first, second, third, fourth]


def create_multi_bars(labels, datas, tick_step=1, group_gap=0.2, bar_gap=0):
  '''
  labels : x軸坐標(biāo)標(biāo)簽序列
  datas :數(shù)據(jù)集,二維列表,要求列表每個元素的長度必須與labels的長度一致
  tick_step :默認(rèn)x軸刻度步長為1,通過tick_step可調(diào)整x軸刻度步長。
  group_gap : 柱子組與組之間的間隙,最好為正值,否則組與組之間重疊
  bar_gap :每組柱子之間的空隙,默認(rèn)為0,每組柱子緊挨,正值每組柱子之間有間隙,負(fù)值每組柱子之間重疊
  '''
  # ticks為x軸刻度
  ticks = np.arange(len(labels)) * tick_step
  # group_num為數(shù)據(jù)的組數(shù),即每組柱子的柱子個數(shù)
  group_num = len(datas)
  # group_width為每組柱子的總寬度,group_gap 為柱子組與組之間的間隙。
  group_width = tick_step - group_gap
  # bar_span為每組柱子之間在x軸上的距離,即柱子寬度和間隙的總和
  bar_span = group_width / group_num
  # bar_width為每個柱子的實際寬度
  bar_width = bar_span - bar_gap
  # baseline_x為每組柱子第一個柱子的基準(zhǔn)x軸位置,隨后的柱子依次遞增bar_span即可
  baseline_x = ticks - (group_width - bar_span) / 2
  for index, y in enumerate(datas):
    plt.bar(baseline_x + index*bar_span, y, bar_width)
  plt.ylabel('Scores')
  plt.title('multi datasets')
  # x軸刻度標(biāo)簽位置與x軸刻度一致
  plt.xticks(ticks, labels)
  plt.show()
  

create_multi_bars(label, data, bar_gap=0.1)

方法二

import matplotlib
import matplotlib.pyplot as plt
import numpy as np

label = ['G1', 'G2', 'G3', 'G4', 'G5']
first = [20, 34, 30, 35, 27]
second = [25, 32, 34, 20, 25]
third = [21, 31, 37, 21, 28]
fourth = [26, 31, 35, 27, 21]
data = [first, second, third, fourth]


def create_multi_bars(labels, datas, tick_step=1, group_gap=0.2, bar_gap=0):
  '''
  labels : x軸坐標(biāo)標(biāo)簽序列
  datas :數(shù)據(jù)集,二維列表,要求列表每個元素的長度必須與labels的長度一致
  tick_step :默認(rèn)x軸刻度步長為1,通過tick_step可調(diào)整x軸刻度步長。
  group_gap : 柱子組與組之間的間隙,最好為正值,否則組與組之間重疊
  bar_gap :每組柱子之間的空隙,默認(rèn)為0,每組柱子緊挨,正值每組柱子之間有間隙,負(fù)值每組柱子之間重疊
  '''
  # x為每組柱子x軸的基準(zhǔn)位置
  x = np.arange(len(labels)) * tick_step
  # group_num為數(shù)據(jù)的組數(shù),即每組柱子的柱子個數(shù)
  group_num = len(datas)
  # group_width為每組柱子的總寬度,group_gap 為柱子組與組之間的間隙。
  group_width = tick_step - group_gap
  # bar_span為每組柱子之間在x軸上的距離,即柱子寬度和間隙的總和
  bar_span = group_width / group_num
  # bar_width為每個柱子的實際寬度
  bar_width = bar_span - bar_gap
  # 繪制柱子
  for index, y in enumerate(datas):
    plt.bar(x + index*bar_span, y, bar_width)
  plt.ylabel('Scores')
  plt.title('multi datasets')
  # ticks為新x軸刻度標(biāo)簽位置,即每組柱子x軸上的中心位置
  ticks = x + (group_width - bar_span) / 2
  plt.xticks(ticks, labels)
  plt.show()

create_multi_bars(label, data[:3], bar_gap=0.1)

相關(guān)文章

  • Python中str.format()和f-string的使用

    Python中str.format()和f-string的使用

    本文主要介紹了Python中str.format()和f-string的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 利用Python如何制作貪吃蛇及AI版貪吃蛇詳解

    利用Python如何制作貪吃蛇及AI版貪吃蛇詳解

    這篇文章主要給大家介紹了關(guān)于利用Python如何制作貪吃蛇及AI版貪吃蛇的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Django中處理出錯頁面的方法

    Django中處理出錯頁面的方法

    這篇文章主要介紹了Django中處理出錯頁面的方法,即在異常出現(xiàn)時返回的頁面信息,需要的朋友可以參考下
    2015-07-07
  • 淺析Python如何監(jiān)聽和響應(yīng)鍵盤按鍵

    淺析Python如何監(jiān)聽和響應(yīng)鍵盤按鍵

    在許多編程場景中,接收并響應(yīng)用戶輸入是至關(guān)重要的,本文主要為大家詳細(xì)介紹如何使用Python來監(jiān)聽和響應(yīng)鍵盤按鍵,有需要的小伙伴可以參考下
    2024-03-03
  • Python3中函數(shù)參數(shù)傳遞方式實例詳解

    Python3中函數(shù)參數(shù)傳遞方式實例詳解

    這篇文章主要介紹了Python3中函數(shù)參數(shù)傳遞方式,結(jié)合實例形式較為詳細(xì)的分析了Python3中函數(shù)參數(shù)傳遞的常見操作技巧,需要的朋友可以參考下
    2019-05-05
  • keras繪制acc和loss曲線圖實例

    keras繪制acc和loss曲線圖實例

    這篇文章主要介紹了keras繪制acc和loss曲線圖實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 詳解Python3中的 input() 函數(shù)

    詳解Python3中的 input() 函數(shù)

    這篇文章主要介紹了詳解Python3中的 input() 函數(shù)的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2020-03-03
  • python創(chuàng)建與遍歷List二維列表的方法

    python創(chuàng)建與遍歷List二維列表的方法

    這篇文章主要介紹了python創(chuàng)建與遍歷List二維列表的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • python實現(xiàn)任意位置文件分割的實例

    python實現(xiàn)任意位置文件分割的實例

    今天小編就為大家分享一篇python實現(xiàn)任意位置文件分割的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python高并發(fā)和多線程有什么關(guān)系

    Python高并發(fā)和多線程有什么關(guān)系

    這篇文章主要介紹了Python高并發(fā)和多線程有什么關(guān)系,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論

平凉市| 逊克县| 五家渠市| 鸡东县| 加查县| 伊春市| 鹰潭市| 宣化县| 宣威市| 闽清县| 永清县| 务川| 新竹市| 措美县| 郸城县| 兰考县| 疏勒县| 通化市| 威远县| 澜沧| 黄浦区| 新源县| 凭祥市| 布尔津县| 上蔡县| 佛山市| 柯坪县| 邢台市| 赤城县| 大宁县| 五台县| 万年县| 滕州市| 锡林浩特市| 颍上县| 石台县| 葫芦岛市| 扎鲁特旗| 承德县| 邵东县| 湘潭市|