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,一经查实,立即删除!

相关文章

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;推出了一种全新的…

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;可以是绝对…

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

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

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

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

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

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

springmvc工作流程_SpringMVC工作原理

买了好多书&#xff0c;但是没有一本是看完的&#xff0c;这是看完的第一本书&#xff0c;虽然页数不多、技术早就用了老多遍了&#xff0c;还是总结一下吧&#xff01;一、MVC模式MVC是 model、view、和controller的缩写&#xff0c;分别代表web应用程序中的三种职责&#xff…

sql查找一个范围的值_销售需求丨查找问题

BOSS&#xff1a;茶&#xff0c;那个&#xff0c;什么茶来着&#xff1f;&#xff08;递过一杯茶...&#xff09;BOSS&#xff1a;&#xff1f;&#xff01;&#xff01;不是这个&#xff0c;我是说那个白茶啊&#xff01;白茶&#xff1a;......&#xff08;懵&#xff09;咋滴…

pandas输出到excel_学Python还不会处理Excel数据?带你用pandas玩转各种数据处理

开场白以前学习 Python 的 pandas 包时&#xff0c;经常到一些 excel 的论坛寻找实战机会。接下来我会陆续把相关案例分享出来&#xff0c;还会把其中的技术要点做详细的讲解。本文要点&#xff1a;使用 xlwings &#xff0c;如同 vba 一样操作 excel使用 pandas 快速做透视表注…

cadence设计运算放大器_21.比较器的原理与特性,它与运算放大器的本质区别总结归纳...

1.电压比较器的工作原理电压比较器&#xff0c;顾名思义&#xff0c;就是两个输入端的其中一个作为基准&#xff0c;另外一个与基准作比较&#xff0c;输出只存在高电平和低电平两种状态。通过电压比较器&#xff0c;可以将模拟信号转变为数字信号。输入引脚的电位 > -输入引…

插入排序最优_排序专题插入排序

今天开始&#xff0c;我计划用几篇专题来集中练习下有关排序的算法&#xff0c;排序算法是算法中最基础的算法了&#xff0c;所以这部分我们是要尽可能的全都掌握了。排序算法最常见的有如下几种&#xff1a;插入排序(Insertion Sort)选择排序(Selection Sort)希尔排序(Shell S…

c语言设计指导实训,C语言程序设计实训指导

与《c语言程序设计(第2版)》配套&#xff0c;给出所有习题及参考答案。按知识点&#xff0c;精选12个典型实训&#xff0c;给出实训目的与要求、实训内容及实训参考程序。附有自测(考试)样卷及参考答案&#xff0c;供读者自测。提供Turbo C 2.0上机环境介绍及常见的Turbo C 2.0…

python程序代码_python基础二

Python基础-注释的引入注释的分类:<1>单行注释:以#开头&#xff0c;#右边的所有文字当作说明&#xff0c;而不是真正要执行的程序&#xff0c;起辅助说明作用多行注释用三个单引号 ‘’’ 或者三个双引号 “”" 将注释括起来&#xff0c;例如:1、单引号&#xff08;…