Matplotlib示例代码详解(一)——条形图的绘制

  Matplotlib官网上有上百个例子,但是基本上都没有注释。下面我把例子代码贴上,然后说明一下语句的意思。

"""
Simple demo of a horizontal bar chart.
"""
import matplotlib.pyplot as plt
plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt

# Example data
people = (‘Tom‘, ‘Dick‘, ‘Harry‘, ‘Slim‘, ‘Jim‘)
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))

plt.barh(y_pos, performance, xerr=error, align=‘center‘, alpha=0.4)
plt.yticks(y_pos, people)
plt.xlabel(‘Performance‘)
plt.title(‘How fast do you want to go today?‘)

plt.show()

  这是一个绘制条形图的例子,我们依次来看各个函数的意义。

  第5行rcdefaults():重置rc所有的默认参数。相当于初始化,不加这句也应该没有事。

  第11行:建立一个长度为5的元祖。

  第12-14行:就是一个生成列表或生成随机列表的函数,跟python的random和list的用法差别不是很大。

  第16行barh():生成一个水平的条形图。这个函数的声明具体如下:matplotlib.pyplot.barh(bottom, width, height=0.8, left=None, hold=None, **kwargs)。条形图的大小由bottom,width,height,left四个参数决定,边界分别是(left, left+width, bottom, bottom+heigth)。还有一些其余参数,这里只贴出官方文档,就不详述了: 

  color : scalar or array-like, optional——the colors of the bars

  edgecolor : scalar or array-like, optional——the colors of the bar edges

  linewidth : scalar or array-like, optional, default: None——width of bar edge(s). If None, use default linewidth; If 0, don’t draw edges.

  tick_label : string or array-like, optional, default: None——the tick labels of the bars

  xerr : scalar or array-like, optional, default: None——if not None, will be used to generate errorbar(s) on the bar chart

  yerr : scalar or array-like, optional, default: None——if not None, will be used to generate errorbar(s) on the bar chart

  ecolor : scalar or array-like, optional, default: None——specifies the color of errorbar(s)

  capsize : scalar, optional——determines the length in points of the error bar caps default: None, which will take the value from the errorbar.capsize rcParam.

  error_kw :dictionary of kwargs to be passed to errorbar method. ecolor and capsize may be specified here rather than as independent kwargs.

  align : [‘edge’ | ‘center’], optional, default: ‘edge’——If edge, aligns bars by their left edges (for vertical bars) and by their bottom edges (for horizontal bars). If center, interpret the left argument as the coordinates of the centers of the bars.

  log : boolean, optional, default: False——If true, sets the axis to be log scale

  根据上面的文档可以看出第16行是要生成一个底为ypos,宽为performance。xerr会生成一个水平的线,应该是表示误差(猜的)。align表示的条状图的位置,等于center说明要居中。alpha是可选的kwargs参数,表示的是透明度。kwargs参数具体可参考地址:http://matplotlib.org/1.5.0/api/pyplot_api.html#matplotlib.pyplot.barh

  第17行yticks():设置y轴各项的命名和位置。

  第18行xlable(): 设置x轴的轴命名。

  第19行title():设置该图的标题。

  最后一行是显示,最终的结果如下图:

图1

时间: 2024-11-05 22:55:23

Matplotlib示例代码详解(一)——条形图的绘制的相关文章

(Go)07.Go语言中strings和strconv包示例代码详解

1.strings使用 前缀和后缀 HasPrefix判断字符串s是否以prefix开头: 示例: package main import ( "fmt" "strings" ) func main() { pre := "Thi" str1 := "This is a Go program!" fmt.Println(strings.HasPrefix(str1, pre)) } HasSuffix 判断字符串 s 是否以

jQuery选择器代码详解(五)——实例说明tokenize的解析过程

原创文章,转载请写明出处,多谢! 以下分析基于jQuery-1.10.2.js版本. 下面将以$("div:not(.class:contain('span')):eq(3)")为例,说明tokenize和preFilter各段代码是如何协调完成解析的.若想了解tokenize方法和preFilter类的每行代码的详细解释,请参看如下两篇文章: jQuery选择器代码详解(三)--tokenize方法 jQuery选择器代码详解(四)--Expr.preFilter 下面是tokeni

20155326《网络对抗》免考项目—— 深入恶意代码之恶意代码详解

20155326<网络对抗>免考项目--深入恶意代码之恶意代码详解 什么是恶意代码 恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染电脑数据.运行具有入侵性或破坏性的程序.破坏被感染电脑数据的安全性和完整性的目的. 恶意代码生命周期 攻击目标: 个人计算机 服务器 移动智能终端 手机.平板等 智能设备 特斯拉汽车.智能家居.智能手表等 通信设备 路由器.交换机等 安全设备等 防火墙.IDS, IPS. VDS 攻击目标范围: 定点攻击 邮件.IP.域名.

tiny_cnn代码详解(3)——层间继承关系

在上一篇博文中我们顺利将tiny_cnn的程序调试通过,在这篇博文中我们尝试从整体角度给出对tiny_cnn这个深度学习框架的解读,重点论述一下其各个层直接类封装的继承关系. 一.卷积神经网络快速入门 tiny_cnn作为卷积神经网络的一种实现形式,在探讨其框架结构之前,首先需要简要介绍一些卷积神经网络相关的知识.首先,给出经典卷积神经网络的网络结构: 这个是经典的LeNet-5的网络结构图,五层网络.最早用于支票上的手写数字识别,也是最早的商业化的深度学习模型.从上图中可以看出,卷积神经网络主

Github-jcjohnson/torch-rnn代码详解

Github-jcjohnson/torch-rnn代码详解 [email protected] http://www.cnblogs.com/swje/ 作者:Zhouwan  2016-3-18 声明: 1)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除. 2)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 请联系:[email protected] 或[email protected] 本研

jQuery选择器代码详解(四)——Expr.preFilter

原创文章,转载请注明出处,多谢! Expr.preFilter是tokenize方法中对ATTR.CHILD.PSEUDO三种选择器进行预处理的方法.具体如下: Expr.preFilter : { "ATTR" : function(match) { /* * 完成如下任务: * 1.属性名称解码 * 2.属性值解码 * 3.若判断符为~=,则在属性值两边加上空格 * 4.返回最终的mtach对象 * * match[1]表示属性名称, * match[1].replace(rune

JQuery选择器代码详解(三)——tokenize方法

原创文章,转载请注明出处,多谢! /* * tokenize函数是选择器解析的核心函数,它将选择器转换成两级数组groups * 举例: * 若选择器为"div.class,span",则解析后的结果为: * group[0][0] = {type:'TAG',value:'div',matches:match} * group[0][1] = {type:'CLASS',value:'.class',matches:match} * group[1][0] = {type:'TAG'

开胃小菜——impress.js代码详解

README 友情提醒,下面有大量代码,由于网页上代码显示都是同一个颜色,所以推荐大家复制到自己的代码编辑器中看. 今天闲来无事,研究了一番impress.js的源码.由于之前研究过jQuery,看impress.js并没有遇到太大的阻碍,读代码用了一个小时,写这篇文章用了近三个小时,果然写文章比读代码费劲多了. 个人感觉impress.js的代码量(算上注释一共不到1000行)和难度(没有jQuery的各种black magic= =)都非常适合新手学习,所以写一个总结,帮助大家理解源码. 考

jQuery选择器代码详解(七)——elementMatcher函数

要读懂Sizzle的Compile执行过程,首先需要弄清楚涉及的各个子程序的功能和关键变量和作用,我将逐一对jQuery-1.10.2版本的Compile代码进行说明,望能给予大家帮助. elementMatcher(matchers) 1.源码 function elementMatcher(matchers) { return matchers.length > 1 ? function(elem, context, xml) { var i = matchers.length; while