婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > matplotlib bar()實現多組數據并列柱狀圖通用簡便創建方法

matplotlib bar()實現多組數據并列柱狀圖通用簡便創建方法

熱門標簽:柳州正規電銷機器人收費 深圳網絡外呼系統代理商 騰訊地圖標注有什么版本 鎮江人工外呼系統供應商 千呼ai電話機器人免費 申請辦個400電話號碼 外呼系統前面有錄音播放嗎 高德地圖標注字母 400電話辦理費用收費

在使用柱狀圖時,經常遇到需要多組數據進行比較的情況。
繪制單個數據系列的柱形圖比較簡單,多組數據柱狀圖繪制的關鍵有三點:

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

由上述可知,多組數據并列柱狀圖需要計算柱子x軸上的位置和x軸刻度標簽。
因此,有兩種實現方案:

  • x軸刻度標簽位置固定,根據x軸刻度計算每個柱子的寬度
  • 每個柱子的寬度固定,計算x軸刻度標簽位置,使之居中

下面使用第一種方法演示兩組數據、三組數據、四組數據的并列柱狀圖。
使用方法一、方法二演示通用多組并列柱狀圖的創建方法。

兩組數據、三組數據、四組數據的并列柱狀圖

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

plt.figure(figsize=(13, 4))
# 構造x軸刻度標簽、數據
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]

# 兩組數據
plt.subplot(131)
x = np.arange(len(labels)) # x軸刻度標簽位置
width = 0.25 # 柱子的寬度
# 計算每個柱子在x軸上的位置,保證x軸刻度標簽居中
# x - width/2,x + width/2即每組數據在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軸刻度標簽位置不進行計算
plt.xticks(x, labels=labels)
plt.legend()
# 三組數據
plt.subplot(132)
x = np.arange(len(labels)) # x軸刻度標簽位置
width = 0.25 # 柱子的寬度
# 計算每個柱子在x軸上的位置,保證x軸刻度標簽居中
# x - width,x, x + width即每組數據在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軸刻度標簽位置不進行計算
plt.xticks(x, labels=labels)
plt.legend()
# 四組數據
plt.subplot(133)
x = np.arange(len(labels)) # x軸刻度標簽位置
width = 0.2 # 柱子的寬度
# 計算每個柱子在x軸上的位置,保證x軸刻度標簽居中
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軸刻度標簽位置不進行計算
plt.xticks(x, labels=labels)
plt.legend()

plt.show()

通用多組并列柱狀圖的簡便創建方法

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

方法一

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軸坐標標簽序列
  datas :數據集,二維列表,要求列表每個元素的長度必須與labels的長度一致
  tick_step :默認x軸刻度步長為1,通過tick_step可調整x軸刻度步長。
  group_gap : 柱子組與組之間的間隙,最好為正值,否則組與組之間重疊
  bar_gap :每組柱子之間的空隙,默認為0,每組柱子緊挨,正值每組柱子之間有間隙,負值每組柱子之間重疊
  '''
  # ticks為x軸刻度
  ticks = np.arange(len(labels)) * tick_step
  # group_num為數據的組數,即每組柱子的柱子個數
  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為每組柱子第一個柱子的基準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軸刻度標簽位置與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軸坐標標簽序列
  datas :數據集,二維列表,要求列表每個元素的長度必須與labels的長度一致
  tick_step :默認x軸刻度步長為1,通過tick_step可調整x軸刻度步長。
  group_gap : 柱子組與組之間的間隙,最好為正值,否則組與組之間重疊
  bar_gap :每組柱子之間的空隙,默認為0,每組柱子緊挨,正值每組柱子之間有間隙,負值每組柱子之間重疊
  '''
  # x為每組柱子x軸的基準位置
  x = np.arange(len(labels)) * tick_step
  # group_num為數據的組數,即每組柱子的柱子個數
  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軸刻度標簽位置,即每組柱子x軸上的中心位置
  ticks = x + (group_width - bar_span) / 2
  plt.xticks(ticks, labels)
  plt.show()

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

您可能感興趣的文章:
  • Python matplotlib模塊及柱狀圖用法解析
  • python調用matplotlib模塊繪制柱狀圖
  • python使用matplotlib畫柱狀圖、散點圖
  • python+matplotlib實現禮盒柱狀圖實例代碼
  • python使用matplotlib繪制柱狀圖教程
  • matplotlib bar()實現百分比堆積柱狀圖

標簽:郴州 大慶 海南 烏蘭察布 平頂山 合肥 烏蘭察布 哈爾濱

巨人網絡通訊聲明:本文標題《matplotlib bar()實現多組數據并列柱狀圖通用簡便創建方法》,本文關鍵詞  matplotlib,bar,實現,多組,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《matplotlib bar()實現多組數據并列柱狀圖通用簡便創建方法》相關的同類信息!
  • 本頁收集關于matplotlib bar()實現多組數據并列柱狀圖通用簡便創建方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日本人妖一区二区| 亚洲国产视频a| 欧美色爱综合网| 一区二区国产盗摄色噜噜| 91在线云播放| 国产精品一区二区91| 亚洲国产日日夜夜| 91久久线看在观草草青青| 国产综合色视频| 国产自产高清不卡| 成人午夜在线视频| 亚洲成av人综合在线观看| 亚洲丝袜另类动漫二区| 成人激情小说网站| 亚洲成人动漫在线观看| 偷窥国产亚洲免费视频| 日本成人在线不卡视频| 色婷婷国产精品久久包臀| 人人超碰91尤物精品国产| 国产精品国产三级国产aⅴ入口 | 亚洲啪啪综合av一区二区三区| 色哟哟国产精品免费观看| 精品国产精品一区二区夜夜嗨| 久久精品国产99国产| 国产精品欧美一区喷水| 91在线观看美女| 五月激情丁香一区二区三区| 欧美日韩综合在线| 国产乱人伦偷精品视频免下载| 亚洲日本乱码在线观看| 制服丝袜亚洲色图| 99久久777色| 国产乱淫av一区二区三区| 亚洲一级在线观看| 欧美激情中文字幕一区二区| 色噜噜狠狠成人中文综合| 美女www一区二区| 亚洲自拍偷拍麻豆| 国产欧美一区二区三区网站| 色哟哟欧美精品| 国产精品 日产精品 欧美精品| 亚洲成人手机在线| 中文字幕一区av| 欧美xxxx老人做受| 欧美日韩aaaaaa| 91小宝寻花一区二区三区| 欧美aaa在线| 一区二区三区欧美日韩| 久久伊99综合婷婷久久伊| 欧美三级电影网| 99久久精品国产网站| 国产综合色产在线精品| 午夜视频一区二区三区| 精品久久久久久最新网址| 在线看日本不卡| 色综合网色综合| 国产精品综合av一区二区国产馆| 日本一道高清亚洲日美韩| 亚洲视频一区二区在线| 国产精品久久久爽爽爽麻豆色哟哟| 久久日韩精品一区二区五区| 4438x亚洲最大成人网| 欧美色图片你懂的| 国产成人免费视| 国产在线精品视频| 精品一区二区在线视频| 韩国精品主播一区二区在线观看| 亚洲国产精品影院| 亚洲一区二区三区四区中文字幕| 国产日本欧美一区二区| 久久婷婷国产综合精品青草| 日韩午夜精品电影| 2023国产精品| 中文字幕不卡的av| 亚洲欧美自拍偷拍| 亚洲欧美一区二区三区久本道91| 亚洲欧洲综合另类在线| 亚洲一区二区三区四区不卡 | 久久99精品一区二区三区三区| 香蕉影视欧美成人| 夜夜嗨av一区二区三区中文字幕 | 久久久久国产免费免费| 日韩精品一区二区三区三区免费 | 色综合天天狠狠| 欧美视频在线一区| 欧美日韩一区二区在线观看| 欧美日韩精品一区二区三区蜜桃| 成人综合婷婷国产精品久久| gogo大胆日本视频一区| 风间由美一区二区av101 | 欧美美女bb生活片| 色噜噜狠狠一区二区三区果冻| 91久久国产最好的精华液| 欧美一区二区在线视频| 欧美va日韩va| 精品国精品国产| 日韩三级高清在线| www成人在线观看| 综合亚洲深深色噜噜狠狠网站| 亚洲精品日产精品乱码不卡| 日韩高清中文字幕一区| 亚洲一区在线电影| 麻豆freexxxx性91精品| 91视视频在线直接观看在线看网页在线看| 欧美亚洲综合在线| 国产欧美日韩在线看| 亚洲午夜私人影院| 成人免费的视频| 91精品国产综合久久精品| 国产精品久久久久久久久免费樱桃| 天堂一区二区在线免费观看| 成人一区在线观看| 日韩欧美不卡在线观看视频| 洋洋成人永久网站入口| 国产999精品久久| 日韩免费一区二区| 亚洲一区二区三区国产| 粉嫩av一区二区三区粉嫩| 91精品国产品国语在线不卡| 亚洲欧美韩国综合色| 成人综合婷婷国产精品久久免费| 日韩欧美自拍偷拍| 丝袜亚洲另类欧美综合| 91黄色在线观看| 国产精品嫩草影院av蜜臀| 捆绑紧缚一区二区三区视频| 色av成人天堂桃色av| 国产日韩综合av| 精品一区二区三区久久| 国产精品久久夜| 麻豆一区二区三| 欧美人牲a欧美精品| 专区另类欧美日韩| 成人激情文学综合网| 精品成人a区在线观看| 美女视频黄免费的久久| 制服丝袜亚洲播放| 欧洲精品一区二区| 亚洲人成网站色在线观看| 99亚偷拍自图区亚洲| 国产精品福利一区二区三区| 国产不卡在线视频| 国产精品拍天天在线| 成人国产一区二区三区精品| 中文字幕制服丝袜一区二区三区 | 一区二区三区影院| 色吊一区二区三区| 亚洲最大成人网4388xx| 91美女在线看| 亚洲一卡二卡三卡四卡五卡| 欧美亚洲免费在线一区| 五月婷婷欧美视频| 欧美一区二区人人喊爽| 激情综合色丁香一区二区| 久久综合成人精品亚洲另类欧美| 国内精品在线播放| 国产精品久久久久久久久久久免费看| 成人av电影在线播放| 亚洲美女视频在线观看| 欧美视频在线观看一区| 青青草视频一区| 久久久久国产精品麻豆ai换脸 | 日韩精品久久理论片| 欧美一区2区视频在线观看| 日本va欧美va欧美va精品| 精品电影一区二区三区| 国产乱淫av一区二区三区| 综合婷婷亚洲小说| 91精品国产综合久久久久久| 国产一区不卡视频| 亚洲免费在线视频一区 二区| 欧美精品777| 丁香天五香天堂综合| 亚洲电影第三页| 久久精品视频一区二区三区| 在线一区二区三区四区五区| 久久99最新地址| 一区二区三区美女| 久久九九影视网| 欧美性猛片xxxx免费看久爱| 美女看a上一区| 亚洲欧美成人一区二区三区| 久久久久成人黄色影片| 91丨porny丨国产入口| 久久99国产精品免费网站| 久久婷婷一区二区三区| 欧美亚洲一区二区三区四区| 国产另类ts人妖一区二区| 婷婷久久综合九色综合伊人色| 久久精品日产第一区二区三区高清版| 欧美人动与zoxxxx乱| 99久久国产综合色|国产精品| 免费观看在线综合色| 亚洲成av人片一区二区| 亚洲欧美激情小说另类| 国产日韩精品一区二区三区在线| 欧美日韩综合在线免费观看| 日本二三区不卡| av在线免费不卡| 国产美女在线精品|