python bar图_python使用matplotlib绘图 — barChart | 学步园

matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。

-----引用自:http://hyry.dip.jp/pydoc/matplotlib_intro.html

这篇我们用matplotlib从构造最简单的bar一步一步向复杂的bar前行。什么是最简单的bar,看如下语句你就知道她有多么简单了:

importmatplotlib.pyplot

as plt

plt.bar(left=0,height=1)

plt.show()

执行效果:

201202132217564282.png

是的,三句话就可以了,是我见过最简单的绘图语句。首先我们import了matplotlib.pyplot ,然后直接调用其bar方法,最后用show显示图像。我解释一下bar中的两个参数:

left:柱形的左边缘的位置,如果我们指定1那么当前柱形的左边缘的x值就是1.0了

height:这是柱形的高度,也就是Y轴的值了

left,height除了可以使用单独的值(此时是一个柱形),也可以使用元组来替换(此时代表多个矩形)。例如,下面的例子:

importmatplotlib.pyplot

as plt

plt.bar(left=(0,1),height=(1,0.5))

plt.show()

201202132217574871.png

可以看到 left = (0,1)的意思就是总共有两个矩形,第一个的左边缘为0,第二个的左边缘为1。height参数同理。

当然,可能你还觉得这两个矩形“太胖”了。此时我们可以通过指定bar的width参数来设置它们的宽度。

importmatplotlib.pyplot

as plt

plt.bar(left=(0,1),height=(1,0.5),width=0.35)

plt.show()

201202132217577969.png

此时又来需求了,我需要标明x,y轴的说明。比如x轴是性别,y轴是人数。实现也很简单,看代码:

importmatplotlib.pyplot

as plt

plt.xlabel(u'性别')

plt.ylabel(u'人数')

plt.bar(left=(0,1),height=(1,0.5),width=0.35)

plt.show()

201202132217579082.png

注意这里的中文一定要用u(3.0以上好像不用,我用的2.7),因为matplotlib只支持unicode。接下来,让我们在x轴上的每个bar进行说明。比如第一个是“男”,第二个是“女”。

importmatplotlib.pyplot

as plt

plt.xlabel(u'性别')

plt.ylabel(u'人数')

plt.xticks((0,1),(u'男',u'女'))

plt.bar(left=(0,1),height=(1,0.5),width=0.35)

plt.show()

201202132217584970.png

plt.xticks的用法和我们前面说到的left,height的用法差不多。如果你有几个bar,那么就是几维的元组。第一个是文字的位置,第二个是具体的文字说明。不过这里有个问题,很显然我们指定的位置有些“偏移”,最理想的状态应该在每个矩形的中间。你可以更改(0,1)=>( (0+0.35)/2 ,(1+0.35)/2 )不过这样比较麻烦。我们可以通过直接指定bar方法里面的align="center"就可以让文字居中了。

importmatplotlib.pyplot

as plt

plt.xlabel(u'性别')

plt.ylabel(u'人数')

plt.xticks((0,1),(u'男',u'女'))

plt.bar(left=(0,1),height=(1,0.5),width=0.35,align="center")

plt.show()

201202132217584131.png

接下来,我们还可以给图标加入标题。

plt.title(u"性别比例分析")

201202132217583608.png

当然,还有图例也少不掉:

importmatplotlib.pyplot

as plt

plt.xlabel(u'性别')

plt.ylabel(u'人数')

plt.title(u"性别比例分析")

plt.xticks((0,1),(u'男',u'女'))

rect=plt.bar(left=(0,1),height=(1,0.5),width=0.35,align="center")

plt.legend((rect,),(u"图例",))

plt.show()

201202132217581133.png

注意这里的legend方法,里面的参数必须是元组。即使你只有一个图例,不然显示不正确。

接下来,我们还可以在每个矩形的上面标注它具体点Y值。这里,我们需要用到一个通用的方法:

defautolabel(rects):

forrectinrects:

height=rect.get_height()

plt.text(rect.get_x()+rect.get_width()/2.,1.03*height,'%s'%float(height))

其中plt.text的参数分别是:x坐标,y坐标,要显示的文字。所以,调用代码如下:

importmatplotlib.pyplot

as plt defautolabel(rects):

forrectinrects:

height=rect.get_height()

plt.text(rect.get_x()+rect.get_width()/2.,1.03*height,'%s'%float(height))

plt.xlabel(u'性别')

plt.ylabel(u'人数')

plt.title(u"性别比例分析")

plt.xticks((0,1),(u'男',u'女'))

rect=plt.bar(left=(0,1),height=(1,0.5),width=0.35,align="center")

plt.legend((rect,),(u"图例",))

autolabel(rect)

plt.show()

201202132217597578.png

到这里这个图形已经基本完备了,不过可以看到你一个矩形紧靠这顶部,不是很好看。最好能够空出一段距离出来就好了。这个设置我没有找到具体的属性。不过,我还是通过一个小技巧来实现了。就是bar属性的yerr参数。一旦设置了这个参数,那么对应的矩形上面就会有一个竖着的线,我不知道他是干什么的。不过当我把这个值设置的很小的时候,上面的空白就自动空出来了。如图:

rect=plt.bar(left=(0,1),height=(1,0.5),width=0.35,align="center",yerr=0.000001)

201202132217594230.png

对于左右两边能否空出空白来暂时还没有找到(xerr参数不行)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux2.4内核下载,升级到Linux 2.4内核

升级到Linux 2.4内核时间:2006/7/18 21:25:46作者:佚名人气:972001年1月,Linus Torvalds终于为我们带来了Linux 2.4内核。所有的人都为之欢呼雀跃。不过,大部分的机器却仍然运行在2.2.x内核。人们之所以停留在老版本的…

python登录脚本_selenium+python实现自动登录脚本

os:windows 前提:Python,selenium,IEDriverServer.exe,ie浏览器 首先安装Python2.7 安装成功后,计算机联网状态下在cmd命令行下输入:pip install -U selenium selenium安装后,在sele…

linux 4t磁盘格式化,centos格式化大于2T的硬盘

parted /dev/sdb1GNU Parted 1.8.1使用 /dev/sdb1Welcome to GNU Parted! Type help to view a list of commands.(parted) helpcheck NUMBER do a simple check on the file systemcp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to…

python random randint_python中random.randint(1,100)随机数中包不包括1和100

展开全部 在python中的random.randint(a,b)用于生成一个2113指定范围内的整数。5261其中参数a是下4102限&#xff0c;1653参数b是上限&#xff0c;生成的随机数n: a < n < b。 print random.randint(12, 20) #生成的随机数n: 12 < n < 20 print random.randint(20,…

curaengine linux编译,CuraEngine开源程序解读

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;meshmesh中主要定义了关于三角形网格三个类和这三个类的一些成员函数&#xff0c;分别是MeshVertex&#xff0c;MeshFace以及Mesh。全局变量const int类型的全局变…

python docx库安装_详解python中docx库的安装过程

python中docx库的简介 python-docx包&#xff0c;这是一个很强大的包&#xff0c;可以用来创建docx文档&#xff0c;包含段落、分页符、表格、图片、标题、样式等几乎所有的word文档中能常用的功能都包含了&#xff0c;这个包的主要功能便是用来创建文档&#xff0c;相对来说用…

创新固定资产管理方式:易点易动集成企业微信的全新解决方案

在当今竞争激烈的商业环境中&#xff0c;高效的固定资产管理对于企业的成功至关重要。然而&#xff0c;传统的资产管理方式往往繁琐、容易出错&#xff0c;并且缺乏实时性和准确性。为了解决这些挑战&#xff0c;易点易动与企业微信进行了集成合作&#xff0c;推出了一种全新的…

linux下怎样看设备的中断号,Linux设备驱动的中断处理

Linux设备驱动中&#xff0c;中断处理非常重要&#xff0c;尤其是在嵌入式系统中&#xff0c;无时无刻不在与中断打交道&#xff0c;因此&#xff0c;中断处理必须要牢牢掌握。设备在产生某个事件时通知处理器的方法就是中断。中断就是一个信号&#xff0c;当硬件需要通知CPU你…

python删除重复元素_Python-删除列表中重复元素的方法

原博文 2017-12-21 17:07 − 1.set()方法 x [1,2,3,4,5,1] y list(set(x)) print(y) [1, 2, 3, 4, 5] 2. x [b,c,d,b,c,a,a] y {}.fromkeys(x).ke... 相关推荐 2019-09-28 21:13 − Python python是一种跨平台的计算机程序设计语言&#xff0c;是一种面向对象的动态类型语…

linux内核提取ret2usr,Linux内核漏洞利用技术详解 Part 2

前言在上一篇文章中&#xff0c;我们不仅为读者详细介绍了如何搭建环境&#xff0c;还通过一个具体的例子演示了最简单的内核漏洞利用技术&#xff1a;ret2usr。在本文中&#xff0c;我们将逐步启用更多的安全防御机制&#xff0c;即SMEP、KPTI和SMAP&#xff0c;并逐一解释它们…

raid5坏了一块盘怎么办_机械硬盘的坏道处理——屏蔽之

分享一次处理硬盘坏道的经历。打算写的让小白也能照着葫芦画葫芦。机械硬盘的阿喀琉斯之踵无疑是坏道。倘若一块硬盘出现了坏道怎么办&#xff1f;当然是即刻备份资料更换新硬盘。毫无疑问&#xff0c;二手硬盘几乎都是被榨干的状态&#xff0c;活生生地一副论斤卖的样子。当然…

linux 嵌入式 交叉 环境搭建 实验原理,实验三 嵌入式Linux开发环境的搭建

南京邮电大学通达学院实 验 报 告实验 实验三题目 嵌入式Linux开发环境的搭建 课程名称 嵌入式驱动开发实验 学院 专业 班 实验者学号同做者学号 08002210 姓名 毛骏超 同做者学号 08002225 姓名 陈超/ 嵌入式应用开发实验成绩 评定一、实验目的1.掌握嵌入式交叉编译环境的搭建…

insert into select 优化_数据库优化总结

第一部分&#xff1a;SQL语句优化1、尽量避免使用select *&#xff0c;使用具体的字段代替*&#xff0c;只返回使用到的字段。2、尽量避免使用in 和not in&#xff0c;会导致数据库引擎放弃索引进行全表扫描。SELECT * FROM t WHERE id IN (2,3)SELECT * FROM t1 WHERE usernam…

.npy文件_python——文件读写

一&#xff1a;Python中读写文件的方法1.open&#xff08;&#xff09;函数open(file,moder,buffering-1,encodingNone,errorsNone,newlineNone,closefdTrue,openerNone)file &#xff1a; 是一个 path-like object&#xff0c;表示将要打开的文件的路径&#xff0c;可以是绝对…

arm-linux-gcc 硬浮点,ARMCC和GCC编译ARM代码的软浮点和硬浮点问题 【转】

本文介绍了ARM代码编译时的软浮点(soft-float)和硬浮点(hard-float)的编译以及链接实现时的不同。从VFP浮点单元的引入到软浮点(soft-float)和硬浮点(hard-float)的概念&#xff0c;然后是在GCC和ARMCC RVCT工具链下的具体编译参数。VFP (vector floating-point)从ARMv5开始&am…

react native loading动画_React高级进阶指南

懒加载React.lazy函数能让你像渲染常规组件一样处理动态引入(的组件)。 Suspense加载指示器为组件做优雅降级。 fallback属性接受任何在组件加载过程中你想展示的 React 元素。const OtherComponent React.lazy(() > import(./OtherComponent));function MyComponent() { r…

虚拟接口+tx+linux,Linux使用笔记: 解决Xen虚拟机中VLAN接口不能ping大包的问题

出于调试的需要&#xff0c;想在两个Xen虚拟机间使用VLAN相互访问。在Linux上启用VLAN非常简单&#xff0c;只需要使用命令vconfig配置一个VLAN接口就可以了&#xff1a;vconfig add eth0 3ifconfig eth0.3 11.11.4.2 netmask 255.255.255.0 up删除VLAN则使用vconfig rem eth0.…

在一起计时器_古典计时器简介之一 qqtimer

可持续水文的路子又多了一条。在这一系列古典计时器中&#xff0c;qqtimer的地位有些特殊&#xff0c;因为现在还有不少人使用它&#xff0c;而之后要介绍的其他计时器已经基本没啥人用了。有两位最知名的WR日常练习的计时器都是它。首先是Feliks Zemdegs&#xff0c;虽然他已经…

可以装linux的路由器,[转载]linux路由器Quagga的配置(一):安装

部分资料摘自http://blog.chinaunix.net/uid-25513153-id-212328.htmlQuagga是一款功能比较强大的开源路由软件&#xff0c;支持rip,ripng,ospfv2,ospfv3&#xff0c;bgp等协议。目前最新版本为Quagga0.99.17。安装Quagga的目的是使装有linux(我采用的是Ubuntu10.04LTS)系统的电…

管理节点连接不上sql节点_质量成本管理:成本控制、成本分析、费用使用流程与节点说明...

关注【本头条号】更多关于制度、流程、体系、岗位、模板、方案、工具、案例、故事、图书、文案、报告、技能、职场等内容&#xff0c;弗布克15年积累免费与您分享&#xff01;阅读导航→01 质量成本控制流程与节点02 质量成本分析流程与节点03 质量费用使用控制流程与节点质量部…