matplotlib.__version__ = 3.3.3

摘要:描述了应该如何绘制简单条形图、分组条形图

条形图

条形图是统计中非常常用的一种统计图表,它用来展示定类数据和定量数据。一张好的条形图能够有效地展示统计信息。那么如何使用Python利用matplotlib来绘制一张符合自己预期的条形图呢?

1. 先来看看怎么绘制最基本的条形图

import matplotlib.pyplot as plt

names = ['Chen', 'Wang', 'Lee', 'Zheng']

ages = [25, 22, 21, 24]

# 绘制两组图

fig, ax = plt.subplots()

ax.bar(names, ages,)

简单条形图.png

2. 让我们在条形图上加上图例

import matplotlib.pyplot as plt

names = ['Chen', 'Wang', 'Lee', 'Zheng']

ages = [25, 22, 21, 24]

# 绘制两组图

fig, ax = plt.subplots()

ax.bar(names, ages, label='Age') # 添加标签,便于绘制图例

ax.legend() # 绘制图例

带有图例的条形图

这个添加图例的小技巧你可以应用到几乎所有图形

3.试试两组条形图

有时候我们希望比较同一组人不同的属性,或者同一组属性不同组的人之间的差异,这个时候我们就需要绘制分组的条形图。

3.1. 对于两组而言,这里有一个取巧的简洁方法

import matplotlib.pyplot as plt

names = ['Chen', 'Wang', 'Lee', 'Zheng']

ages = [25, 22, 21, 24]

mental_ages = [7, 8, 9, 10]

fig, ax = plt.subplots()

# 注意引入了align参数,同时第二个width是负数

ax.bar(names, ages, align='edge', width=0.4, label='Age')

ax.bar(names, mental_ages, align='edge', width=-0.4, label='Mental Age')

ax.legend()

注意引入了align参数,同时第二个width是负数

分为两组的条形图

3.2. 但是以下的方法更为通用

import matplotlib.pyplot as plt

names = ['Chen', 'Wang', 'Lee', 'Zheng']

ages = [25, 22, 21, 24]

mental_ages = [7, 8, 9, 10]

fig, ax = plt.subplots()

all_width = 0.6 # 两个条柱的总宽度

width = all_width / 2 # 一个条柱的宽度

onset = width / 2 # 偏移量是半个条柱的宽度

# 创建x坐标

x1, x2 = [x-onset for x in range(4)], [x+onset for x in range(4)]

# 绘图

ax.bar(x1, ages,width=width, label='Age')

ax.bar(x2, mental_ages, width=width, label='Mental Age')

# 修改刻度数量,并且修正为名称

ax.set_xticks(range(4))

ax.set_xticklabels(names)

ax.legend()

其背后的思路是使用数值(而不是标签)来指定条形的位置,这里有两组数据,每个标签对应两个位置。

因此,你可以想象,例如在0两边,两个条形的中心位置应该分别为 负的半个条柱宽度和正的半个条柱宽度。根据这一点,我们分别创建x1列表,x2列表,也就是两组的坐标。

此外,由于使用了数字作为坐标,后续需要改回文字坐标。

4. 试试三组

import matplotlib.pyplot as plt

names = ['Chen', 'Wang', 'Lee', 'Zheng']

ages = [25, 22, 21, 24]

mental_ages = [7, 8, 9, 10]

money = [18, 14, 12, 14]

fig, ax = plt.subplots()

all_width = 0.9 # 三个条柱的总宽度

width = onset = all_width / 3 # 偏移量是一个条柱的宽度

x1 = [x-onset for x in range(4)]

x2 = range(4)

x3 = [x+onset for x in range(4)]

# 绘图

ax.bar(x1, ages,width=onset, label='Age')

ax.bar(x2, mental_ages, width=onset, label='Mental Age')

ax.bar(x3, money, width=onset, label='Money')

# 修改刻度数量,并且修正为名称

ax.set_xticks(range(4))

ax.set_xticklabels(names)

# 绘制图例

ax.legend()

分为三组的条形图

5. 实际上,组数与偏移量有一定的关系

在组数为偶数时,偏移量总是单个条形图宽度的一半;

在组数为奇数时,偏移量总是单个条形图宽度;

def group_and_onset(group_number, all_width=0.9):

# 组数与偏移量的关系

all_width = 0.9

width = all_width / group_number

onset = ((-1)**group_number + 3) / 4 * width

return group_number, all_width, onset

本期到此为止,欢迎关注下一期:堆积条形图与误差线

python pyplot bar 参数_数据可视化之条形图(1):Axes.bar相关推荐

  1. python图形界面实践_数据可视化之实践篇——python

    一.10个可视化例子 import matplotlib.pyplot as plt import seaborn as sns import numpy as np import pandas as ...

  2. python画图怎么调色_数据可视化Seaborn从零开始学习教程(二) 颜色调控篇

    作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 Seaborn学习大纲 seaborn的学习内容主要包含以下几个部分: 风格管理 绘图风格设置 颜色风格设置 绘图方 ...

  3. python 桑基图_数据可视化之 Sankey 桑基图的实现

    什么是桑基图 Google 搜索桑基图,可以搜到一大堆定义.简而言之,桑基图是一种数据流图,展示了数据是如何从左到右流向最后的节点,每条边代表一条数据流,宽度代表数据流的大小.桑基图常用于流量分析,可 ...

  4. python实现的电影票房数据可视化

    代码地址如下: http://www.demodashi.com/demo/14275.html ##详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从 ...

  5. 数据图表可视化_数据可视化如何选择正确的图表第1部分

    数据图表可视化 According to the World Economic Forum, the world produces 2.5 quintillion bytes of data ever ...

  6. 使用Python Seaborn和Pandas进行数据可视化

    Hey, folks! Today we will be unveiling a very interesting module of Python - Seaborn Module and will ...

  7. python与excel做数据可视化-Python的Excel操作及数据可视化

    Excel表操作 python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 安装xlrd pip install xlrd 简单的表格读取 ...

  8. chatgpt赋能python:Python制表位:优化数据可视化与分析的利器

    Python 制表位:优化数据可视化与分析的利器 在数据可视化和分析中,表格是一种常用的数据展示方式.Python 提供了丰富的用于构建表格的库,其中之一便是制表位(Tabulate).本文将介绍制表 ...

  9. R语言使用ggpubr包可视化分组条形图(grouped bar plot)、并添加误差条(error bar、误差条显示平均值+/-sd)、添加分组填充色、添加jitter、自定义分组抖动数据点形状

    R语言使用ggpubr包的ggbarplot函数可视化分组条形图(grouped bar plot).并添加误差条(error bar.误差条显示平均值+/-sd).添加分组填充色.添加jitter抖 ...

  10. Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...

最新文章

  1. Fragment的生命周期和activity如何的一个关系
  2. python sendto(右键发送文件到执行的bat)功能的实现
  3. 主存储器的技术指标有哪些?其含义是什么?
  4. php7 $GLOBALS['HTTP_RAW_POST_DATA']接收不到值
  5. 【优化选址】基于matlab禁忌搜索算法求解基站选址优化问题【含Matlab源码 440期】
  6. pcs7服务器没有报警信息,PCS7服务器报警重启(工程师培训).pdf
  7. 中国重点流域已实现休禁渔制度全覆盖
  8. 万能Ghost系统制作教程(龙帝国论坛)
  9. UIImageJPEGRepresentation 使用中存在的问题
  10. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
  11. AFM成像表面形貌和表面粗糙度
  12. Jquery----下拉菜单(利用滑动效果)
  13. 人工智能 | ShowMeAI资讯日报 #2022.06.24
  14. 小程序使用canvas绘画、签名。wx.canvasToTempFilePath安卓机生成图片背景色为黑色
  15. NAT ,BFD ,NQA 实验
  16. 微信小程序把view居中_初识微信小程序
  17. rpm, tar, gz, bz, bz2, rar, zip, lha, deb, 解压
  18. 一键生成伪原创文章有用吗(正确使用伪原创工具)
  19. MLX90640 红外热成像仪测温传感器模块PC端操作教程
  20. 一文解析56G QSFP+ DAC无源高速线缆

热门文章

  1. 如何配置我们的家用路由器
  2. 韩寒:给李彦宏先生的一封信
  3. 【windows7桌面图标蓝底】4步帮你去掉
  4. ureport2报错/by zero的解决方法
  5. android 获取视频码率和缓存大小,android - 使用MediaCodec和MediaMuxer录制视频,但比特率和帧率不正确 - 堆栈内存溢出...
  6. vue 使用高德地图插件 vue-amap
  7. LTE中的CQI RI PMI参数
  8. vba中FreezePanes(冻结窗格)用法
  9. C语言关键字浅析-_Complex
  10. 微信公众帐号开发教程第8篇-QQ表情的发送与接收