文本以及后续的系列文章中均会使用到numpy这个库,numpy是Python的一种开源的数值计算扩展,主要用来生产一些随机数作为绘图的原始数据。具体和安装matplotlib类似,可以参考安装Matplotlib这篇文章。

文章目录

  • 条形图:
  • 一、bar函数
    • 1. 函数定义:
    • 2、bar的详细定义:
  • 二、示例说明:
  • 三、扩展应用
    • 1、 柱体颜色
    • 2、设置柱体描边
    • 3、设置柱体描边填充
    • 4、堆积条形图
    • 5、并列条形图
    • 5、水平条形图
    • 6、正负条形图
  • 总结

条形图:

长条图(英语:bar chart),亦称条图(英语:bar graph)、条状图、棒形图、柱状图、条形图表、条形图,是一种以长方形的长度为变量的统计图表。用水平或者垂直的条形图来展示各种分类间分散不连续的数字比较。通常利用于较小的数据集分析。长条图亦可横向排列,或用多维方式表达。

一、bar函数

1. 函数定义:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, \*, align='center', data=None, \*\*kwargs)
  1. 常用参数:
  • x:
    需要显示的数据,包含所有柱子的下标的列表,也就是每个柱子的标签;
  • height:
    包含所有柱子的高度值的列表
  • width:
    每个柱子的宽度。 可以指定一个固定值, 那么所有的柱子都是一样的宽。 或者设置一个列表, 这样可以分别对每个柱子设定不同的宽度
  • align:
    柱子对齐方式,有两个可选值:center 和 edge
  • color:
    柱子的颜色,可传入一个固定值或一个列表
  • edgecolor:
    柱子的边框颜色,可传入一个固定值或一个列表
  • linewidth:
    每根柱子的边框宽度。 如果没有设置,默认没有边框
  • tick_label:
    每根柱子上显示的标签, 默认是没有
  • log:
    对于y轴数据进行log操作,默认false;这个对于多个数据列表,数值差异较大的时候进行显示的时候有用

2、bar的详细定义:

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html?highlight=bar#matplotlib.pyplot.bar

二、示例说明:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']men_means= (20, 35, 30, 35, 27)
women_means= (25, 32, 34, 20, 25)#设置X轴上分组的位置,arange函数使用给定间隔内的均匀间隔的值来创建数组,产生[0,1,2,3,4]
ind = np.arange(len(men_means))
#设置bar条的宽度
width = 0.35  fig, ax = plt.subplots()
rects1 = ax.bar(ind - width/2, men_means, width, color='SkyBlue', label='男生')
rects2 = ax.bar(ind + width/2, women_means, width,color='IndianRed', label='女生')#为增加X轴标签,为绘图区域添加标题
ax.set_ylabel('分数')
ax.set_title('各组分数')
plt.xticks(ind,('1组', '2组', '3组', '4组', '5组'))
ax.legend()plt.show();

运行结果如下:

三、扩展应用

1、 柱体颜色

通过 facecolor(或fc) 关键字参数可以设置柱体颜色
通过 color 关键字参数 可以一次性设置多个颜色

import matplotlib.pylab as pltx = [0,1,2,3,4]
y = [39,10,20,25,15]fig = plt.figure()
# 生成第一个子图在1行2列第一列位置
ax1 = fig.add_subplot(121)
# 生成第二子图在1行2列第二列位置
ax2 = fig.add_subplot(122)# 通过fc设置柱体的颜色
ax1.bar(x, y, width=0.5,fc = 'SkyBlue')
# 通过color分布设置各个柱体的颜色
ax2.bar(x, y,color=['b', 'g', 'r', 'c', 'm'])
plt.show()

运行结果如下:

2、设置柱体描边

相关的关键字参数为:

  • edgecolor(ec) 描边颜色
  • linestyle(ls)描边样式
  • linewidth(lw)描边宽度
import matplotlib.pyplot as plt
x = [0,1,2,3,4]
y = [39,10,20,25,15]
fig,ax = plt.subplots()
#设置描边的颜色,样式,宽度
ax.bar(x, y, ec='k', ls='-.', lw=5,color='#ADD8E6')
plt.show()

运行结果如下:

3、设置柱体描边填充

hatch 关键字可用来设置填充样式,可取值为: / , \ , | , - , + , x , o , O , . , *

import matplotlib.pyplot as plt
x = [0,1,2,3,4]
y = [39,10,20,25,15]
#设置填充的样式
plt.bar(x,y,hatch='o')
plt.show()

运行结果如下:

4、堆积条形图

通过 bottom 参数,可以绘制堆叠条形图,其中bottom参数决定了距离x轴的位置。通过堆积图可以有效的进行对比。

import matplotlib.pyplot as plt
import matplotlib
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']x = [1,2,3,4,5]
salary = [5,10,20,25,15]
parttime_income=[30,5,10,20,15]# x轴的刻度为1-5月
labels =["{}月".format(item) for item in x]
fig,ax = plt.subplots(figsize=(12,6),dpi=80)
ax.bar(x,parttime_income,tick_label=labels,label='兼职收入')
ax.bar(x,salary,bottom=parttime_income,tick_label=labels,label="工资")ax.legend()
plt.show()

运行结果如下:

5、并列条形图

通过并列条形图,可以直观的对比多个数据样本之间的差异。

import matplotlib.pyplot as plt
import matplotlib
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']#设置bar条的宽度
width = 0.4
X = [1,2,3,4,5]
salary = [5,10,20,25,15]
parttime_income=[30,5,10,20,15]
# x轴的刻度为1-5月
labels =["{}月".format(item) for item in x]fig,ax = plt.subplots(figsize=(12,6),dpi=80)
##绘制兼职收入的柱状图
ax.bar([x-width/2 for x in X],parttime_income,width,tick_label=labels,label='兼职收入')
ax.bar([x+width/2 for x in X],salary,width,tick_label=labels,label="工资")ax.legend()
plt.show()

运行结果如下:

5、水平条形图

水平条形图通过barh函数进行绘制。

barh(bottom, width, height=0.8, left=None, **kwargs)
import matplotlib.pyplot as plt
import matplotlib
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']#设置bar条的宽度
width = 0.4  X = [1,2,3,4,5]
salary = [5,10,20,25,15]
parttime_income=[30,5,10,20,15]# x轴的刻度为1-5月
labels =["{}月".format(item) for item in x]fig,ax = plt.subplots(figsize=(12,6),dpi=80)
##绘制兼职收入的柱状图
ax.barh([x-width/2 for x in X],parttime_income,width,tick_label=labels,label='兼职收入')
ax.barh([x+width/2 for x in X],salary,width,tick_label=labels,label="工资")ax.legend()
plt.show()

6、正负条形图

通过左右两边进行数据的呈现

import matplotlib.pyplot as plt
import matplotlib
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']#设置bar条的宽度
width = 0.4  X = [1,2,3,4,5]
salary = [5,10,20,25,15]
parttime_income=[30,5,10,20,15]# x轴的刻度为1-5月
labels =["{}月".format(item) for item in x]fig,ax = plt.subplots(figsize=(12,6),dpi=80)
##绘制兼职收入的柱状图
ax.barh(X,parttime_income,width,tick_label=labels,label='兼职收入')
##通过列表生成式将salary的数据变为负值
ax.barh(X,[-s for s in salary],width,tick_label=labels,label="工资")ax.legend()
plt.show()


总结

条形图简单直观,根据柱子的长短看出值的大小,易于比较各组数据之间的差别及走势,对应的优势

  • 1、能够使人们一眼看出各个数据的大小。
  • 2、易于比较数据之间的差别。

在实际的使用中容易将直方图和条形图混淆,这两者图形的主要区别如下:
条形图与直方图的区别是:

  • 1、条形图是用条形的高度表示频数的大小,而直方图实际上是用长方形的面积表示频数,当长方形的宽相等的时候可以用矩形的高表示频数;
  • 2、条形图中,横轴上的数据是孤立的,是一个具体的数据,而直方图中,横轴上的数据是连续的,是一个范围;
  • 3、条形图中,各长方形之间有空隙,而直方图中,各长方形是靠在一起的

matlibplot之条形图相关推荐

  1. hdc mfc 画扇形图_使用echarts绘制条形图和扇形图

    使用echarts绘制条形图和扇形图 简单举例说明下echarts如何绘制条形图和扇形图 代码示例 echarts绘制条形图和扇形图 var mychart1=echarts.init(documen ...

  2. echarts - 条形图grid设置距离绘图区域的距离

    在一些数据量过大的情况下,在一个固定的区域绘图往往需要对图表绘制区域的大小进行动态改变.这时候设置条形图距离绘图区域上下左右的距离可使用如下方式:表示条形图的柱子距离绘图区左边30%,距离右边40%, ...

  3. 技术图文:如何利用C# + Echarts 绘制「堆叠条形图」?

    背景 前几天,我们介绍了 如何利用C# + Echarts 绘制 Bar Simple?,原以为把 Echarts 封装到这种程度就可以完成当前任务了. 可是,把软件原型提交给对方时,发现对方更希望& ...

  4. 如何读取Excel表格中不同sheet表的同一位置单元格数据,并绘制条形图呢?

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 今天,有位朋友在群里面咨询了一个问题:如何读取Excel表格中"不同sheet表"的同一位置单元格数据,并绘制条形图呢? 有人提议 ...

  5. R语言绘制不一样的条形图

    绘制条形图的方法有很多,这里介绍如果用R语言绘制一个不一样的条形图 准备数据,这里为了方便,我们使用已经存在于gcookbook包中的一个数据集 首先需要调用该包,如果该包不存在,可以使用下面的方式安 ...

  6. R语言绘制堆叠的环状条形图

    堆叠条形图的进阶版,极坐标下的barplot,下面是R绘制堆叠的环状条形图的小例子. #调用包 library(tidyverse) library(viridis)# 模拟数据集 data < ...

  7. R语言绘制堆叠条形图

    ggplot2画简单堆叠条形图 1.使用ggplot2和reshape2包: library(ggplot2) library(reshape2) 2.创建并读取数据: df = read.table ...

  8. R语言绘制环状条形图

    分享一波环状条形图的代码,可以自己动手试试~ library(tidyverse)# 创建数据集 data <- data.frame(individual=paste( "Miste ...

  9. Python使用matplotlib可视化条形图(bar plot)、自定义在条形图的顶部添加数值标签(Bar Chart)

    Python使用matplotlib可视化条形图(bar plot).自定义在条形图的顶部添加数值标签(Bar Chart) 目录

  10. R语言ggplot2可视化:ggplot2可视化水平堆叠条形图、并且在每个堆叠条形图的内部居中添加百分比文本标签信息

    R语言ggplot2可视化:ggplot2可视化水平堆叠条形图.并且在每个堆叠条形图的内部居中添加百分比文本标签信息 目录

最新文章

  1. Magento中如何在模块中使用多张数据表并配置多个model?
  2. Connect(); // 2015 简要整理
  3. sina stock历史数据
  4. 可视化 nltk_词嵌入:具有Genism,NLTK和t-SNE可视化的Word2Vec
  5. go get如何删除_Go 每日一库之 xorm
  6. linux给文件加可执行权限
  7. np生成多维数组数组比较
  8. 当滚动页面到一定程度时,页顶菜单浮动固定在页面顶部
  9. NUMA与英特尔下一代Xeon处理器学习心得(10)
  10. Julia : 终于1.0了,这一天来得有点久
  11. sql 找不到oracle接口,sql-server – sql server链接服务器到oracle返回数据存在时找不到的数据...
  12. 一篇博文搞定英文常见单词后缀(完全版)
  13. 现有的评分和排名算法
  14. 【redis集群:2. 集群伸缩】
  15. 各种文件对应的文件类型
  16. 2022-2028年中国渗滤液行业市场运行态势及发展战略研究报告
  17. 计算机德育教育课题,德育教育研究课题有哪些研究方向
  18. win10 服务器远程连接数量限制修改
  19. 什么是机器学习,机器学习的用途?
  20. Google C++编程规范

热门文章

  1. 单车---------Eason
  2. python计算一个多项式_急求 python 使用class定义多项式P(x)=a0=a1x+a2x^2……anx^n 使用__init__()产生一个列表记录a的值...
  3. 时间记录APP———Time Meter
  4. winform,鼠标移动到label标签时变成手的形状
  5. Golang源码探索----GC的实现原理(3)
  6. 【软件工程】决策表和决策树
  7. WeChat微信商户号JSAPI支付 支付授权目录无法添加:添加完成后不刷新再添加一遍
  8. Stop Staring: Facial Modeling and Animation Done Right
  9. frm mysql触发器_使用mysqlfrm恢复frm表结构的方法
  10. 经纬度坐标转为上海地方坐标代码(js代码)