Photo from Unsplash

上篇文章,我已经讲解绘制图像大致步骤,接下来的系列文章将分别对各种图形做讲解。其实就是了解各个图种的绘图 API。文章就讲解第一种图形,柱状图。

1 基础

绘制柱状图,我们主要用到bar() 函数。只要将该函数理解透彻,我们就能绘制各种类型的柱状图。

我们先看下 bar() 的构造函数:bar(x,height, width,*,align='center',**kwargs)

x

包含所有柱子的下标的列表

height

包含所有柱子的高度值的列表

width

每个柱子的宽度。可以指定一个固定值,那么所有的柱子都是一样的宽。或者设置一个列表,这样可以分别对每个柱子设定不同的宽度。

align

柱子对齐方式,有两个可选值:center和 edge。center表示每根柱子是根据下标来对齐, edge则表示每根柱子全部以下标为起点,然后显示到下标的右边。如果不指定该参数,默认值是 center。

其他可选参数有:

color

每根柱子呈现的颜色。同样可指定一个颜色值,让所有柱子呈现同样颜色;或者指定带有不同颜色的列表,让不同柱子显示不同颜色。

edgecolor

每根柱子边框的颜色。同样可指定一个颜色值,让所有柱子边框呈现同样颜色;或者指定带有不同颜色的列表,让不同柱子的边框显示不同颜色。

linewidth

每根柱子的边框宽度。如果没有设置该参数,将使用默认宽度,默认是没有边框。

tick_label

每根柱子上显示的标签,默认是没有内容。

xerr

每根柱子顶部在横轴方向的线段。如果指定一个固定值,所有柱子的线段将一直长;如果指定一个带有不同长度值的列表,那么柱子顶部的线段将呈现不同长度。

yerr

每根柱子顶端在纵轴方向的线段。如果指定一个固定值,所有柱子的线段将一直长;如果指定一个带有不同长度值的列表,那么柱子顶部的线段将呈现不同长度。

ecolor

设置 xerr和 yerr的线段的颜色。同样可以指定一个固定值或者一个列表。

capsize

这个参数很有趣, 对 xerr或者 yerr的补充说明。一般为其设置一个整数,例如 10。如果你已经设置了 yerr 参数,那么设置 capsize参数,会在每跟柱子顶部线段上面的首尾部分增加两条垂直原来线段的线段。对 xerr 参数也是同样道理。可能看说明会觉得绕,如果你看下图就一目了然了。

error_kw

设置 xerr 和 yerr 参数显示线段的参数,它是个字典类型。如果你在该参数中又重新定义了 ecolor 和 capsize,那么显示效果以这个为准。

log

这个参数,我暂时搞不懂有什么用。

orientation

设置柱子是显示方式。设置值为 vertical ,那么显示为柱形图。如果设置为 horizontal 条形图。不过 matplotlib 官网不建议直接使用这个来绘制条形图,使用 barh来绘制条形图。

下面我就调用 bar 函数绘制一个最简单的柱形图。

import matplotlib.pyplot as plt

import numpy as np

# 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英寸

plt.figure(figsize=(8, 6), dpi=80)

# 再创建一个规格为 1 x 1 的子图

plt.subplot(1, 1, 1)

# 柱子总数

N = 6

# 包含每个柱子对应值的序列

values = (25, 32, 34, 20, 41, 50)

# 包含每个柱子下标的序列

index = np.arange(N)

# 柱子的宽度

width = 0.35

# 绘制柱状图, 每根柱子的颜色为紫罗兰色

p2 = plt.bar(index, values, width, label="rainfall", color="#87CEFA")

# 设置横轴标签

plt.xlabel('Months')

# 设置纵轴标签

plt.ylabel('rainfall (mm)')

# 添加标题

plt.title('Monthly average rainfall')

# 添加纵横轴的刻度

plt.xticks(index, ('Jan', 'Fub', 'Mar', 'Apr', 'May', 'Jun'))

plt.yticks(np.arange(0, 81, 10))

# 添加图例

plt.legend(loc="upper right")

plt.show()

运行结果为:

2 进阶

bar 函数的参数很多,你可以使用这些参数绘制你所需要柱形图的样式。如果你还不会灵活使用这样参数,那就让我们来学习 matplotlib 官方提供的例子。

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.ticker import MaxNLocator

from collections import namedtuple

n_groups = 5

means_men = (20, 35, 30, 35, 27)

std_men = (2, 3, 4, 1, 2)

means_women = (25, 32, 34, 20, 25)

std_women = (3, 5, 2, 3, 3)

fig, ax = plt.subplots()

index = np.arange(n_groups)

bar_width = 0.35

opacity = 0.4

error_config = {'ecolor': '0.3'}

rects1 = ax.bar(index, means_men, bar_width,

alpha=opacity, color='b',

yerr=std_men, error_kw=error_config,

label='Men')

rects2 = ax.bar(index + bar_width, means_women, bar_width,

alpha=opacity, color='r',

yerr=std_women, error_kw=error_config,

label='Women')

ax.set_xlabel('Group')

ax.set_ylabel('Scores')

ax.set_title('Scores by group and gender')

ax.set_xticks(index + bar_width / 2)

ax.set_xticklabels(('A', 'B', 'C', 'D', 'E'))

ax.legend()

fig.tight_layout()

plt.show()

运行结果如下:

开动你的大脑,想想还能绘制出什么样式的柱形图。

END

作者:猴哥

公众号:极客猴

爱好读书,喜欢钻研技术,梦想成为文艺青年的 boy。

极客猴

分享干货的公众号

长按指纹 > 识别图中二维码 > 添加关注

python matplotlib 柱状图三个变量_Python 绘图,我只用 Matplotlib(三)—— 柱状图...相关推荐

  1. python中plot的图像类型_Python绘图问题:Matplotlib中指定图片大小和像素

    主要作用为指定图片像素: matplotlib.rcParams['figure.figsize']#图片像素 matplotlib.rcParams['savefig.dpi']#分辨率 plt.s ...

  2. python绘制动态条形图_Python 绘图与可视化 matplotlib 动态条形图 bar

    第一种办法 一种方法是每次都重新画,包括清除figure def animate(fi): bars=[] if len(frames)>fi: # axs.text(0.1,0.90,time ...

  3. matplotlib柱状图上方显示数据_Python数据可视化之matplotlib

    数据可视化能让人们更直观的传递数据所要表达的信息.Python 中有两个专用于可视化的库,matplotlib 和 seaborn ,本文将介绍matplotlib. Matplotlib:基于Pyt ...

  4. python二维图颜色函数_Python绘图之二维图与三维图详解

    各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...

  5. python同时输入多个变量_python同时给多个变量赋值

    同时赋多个值 以下是一种很酷的编程捷径:在 Python 中,可使用元组来一次 赋多值. >>> v = ('a', 2, True) >>> (x, y, z) ...

  6. python怎么输出字加变量_python输出文字加变量

    python print 如何在输出中插入变量 没有任何基础在学编程,用的是简明Python教程,因为他讲的过于简单,所print '在此输出'+str(a)+'月有兔子'+str(b)+'只' pr ...

  7. python怎么宏定义符号变量_python中定义宏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 什么是宏? 宏类似python中的函数,可以传参数进去,但不能有返回值! 在实际 ...

  8. python绘制不带颜色曲线图_Python数据可视化库-Matplotlib——折线图,子图绘制

    # coding:utf-8 import pandas as pd import numpy as np from matplotlib import pylab as plt # 导入数据可视化库 ...

  9. 用python画动图_Python 绘图与可视化 matplotlib 制作Gif动图

    参考链接:https://blog.csdn.net/theonegis/article/details/51037850 我们可以使用Matplotlib的animation类的FuncAnimat ...

最新文章

  1. 作为项目经理,如何处理好与不同类型客户之间的关系?
  2. python cocos2d菜鸟教程_(译)cocos2d菜单教程:第一部分
  3. 实时监听 input输入框值的变化 并响应动作
  4. 关于 DOM 操作的几个类型
  5. 01 数据类型 、常量变量、运算符、表达式、格式化输入输出
  6. 项目管理在企业发展中的作用及未来的发展方向—— 来自项目管理群的讨论
  7. volatile 关键字解析
  8. Web2.0时代,RSS你会用了吗?(技术实现总结)(转载)
  9. Mybatisplus 自动生成字段 强制覆盖 null或者空字符串也覆盖
  10. WAMP PHP开发环境
  11. A smooth collaborative recommender system 推荐系统-浅显了解
  12. 人工智能发展及其伦理问题思考
  13. go back go fullscreen_四款高端便携音箱TUFTON、B17、MUSIC3和GO+PLAY音质排行榜
  14. matlab 图像的膨胀indilate和腐蚀imerode
  15. 初级软考程序员不会c语言,软考程序员初级通过率是多少_软考程序员初级多少分过_上学吧...
  16. abb变频器dp适配器说明书_ABB变频器ACS510_CN使用说明书.pdf
  17. air 打开外部exe,bat文件的方法
  18. 组台式计算机配置清单整套,组装台式电脑配置清单有哪些 台式电脑什么配置好...
  19. C++:wchar_t 和C++新增类型:char16_t char32_t
  20. 【洛谷P3554】LUK-Triumphal arch【树形dp】【二分】

热门文章

  1. 因为修改系统设置导致edge浏览器打不开的最快解决办法
  2. 苹果手机配对手表总是显示服务器,苹果手机配对手表时一直显示正在验证ID~这是什么情况,在线等...
  3. 都什么年代了,打开个Word文档还能中毒!Locky病毒疯狂传播
  4. 技术宅男既要提升编程技术也要加强沟通能力
  5. 大王卡的业务范围,列出来方便记住/切换
  6. 华为云数据盘挂在及mysql数据库数据目录迁移到数据盘
  7. 爬取foxconn传媒网获取电影信息
  8. 计算机弹歌曲赛马曲谱,二胡演奏经典曲目《赛马》简谱
  9. 安装win10和Ubuntu双系统开机启动项问题总结
  10. Darrell Long简介