(4-1-1)绘制柱状图:绘制基本的柱状图(1)

(4-1-1)绘制柱状图:绘制基本的柱状图(1)柱状图又被称为柱形图 长条图 条状图或棒形图 是一种以长方形的长度为变量的统计图表

柱状图又被称为柱形图、长条图、条状图或棒形图,是一种以长方形的长度为变量的统计图表。在现实应用中,经常使用柱状图来展示数据分析的结果,这样可以更加直观的展示数据分析结果。在本节的内容中,将详细讲解使用Python绘制柱状图的知识。

4.1  绘制基本的柱状图

在数据可视化分析工作中,经常需要绘制和数据统计相关的柱状图。在本节的内容中,将详细讲解在Python程序中使用各种库绘基本柱状图的知识。

4.1.1  绘制只有一个柱子的柱状图

在Python程序中,可以使用Matplotlib很容易地绘制一个柱状图。例如在线的实例文件bar01.py中,只需使用3行代码就可以绘制一个简单地柱状图。

源码路径:codes\4\4-1\bar01.py

import matplotlib.pyplot as plt plt.bar(x = 0,height = 1) plt.show()

在上述代码中,首先使用import导入了matplotlib.pyplot ,然后直接调用其bar()函数绘柱状图,最后用show()函数显示图像。其中在函数bar()中存在如下两个参数。

  1. left:柱形的左边缘的位置,如果指定为1,那么当前柱形的左边缘的x值就是1.0。
  2. height:这是柱形的高度,也就是y轴的值。

执行上述代码后会绘制一个柱状图,如图4-1所示。

图4-1  执行效果

4.1.2  绘制有两个柱子的柱状图

虽然通过上述代码绘制了一个柱状图,但是现实效果不够直观。在绘制函数bar()中,参数x和height除了可以使用单独的值(此时是一个柱形)外,还可以使用组来替换(此时代表多个矩形)。例如在下面的实例文件bar02.py中,演示了使用matplotlib绘制有两个柱子的柱状图的过程。

源码路径:codes\4\4-1\bar02.py

import matplotlib.pyplot as plt          #导入模块 plt.bar(x = (0,1),height = (1,0.5))      #绘制两个柱形图 plt.show()                          #显示绘制的图

执行效果如图4-2所示。

图4-2  执行效果

在上述实例代码中,x = (0,1)的意思是总共有两个矩形,其中第一个的左边缘为0,第二个的左边缘为1。参数height的含义也是同理。当然,此时有的读者可能觉得这两个矩形“太宽”了,不够美观。此时可以通过指定函数bar()中的width参数来设置它们的宽度。请看下面的实例文件bar03.py,功能是设置柱子的宽度width为0.35。

源码路径:codes\4\4-1\bar03.py

import matplotlib.pyplot as plt plt.bar(x = (0,1),height = (1,0.5),width = 0.35) plt.show()

执行效果如图4-3所示

图4-3  设置柱状图宽度

4.1.3  设置柱状图的标签

这时可能有的读者会问:需要标明x和y轴的说明信息,比如使用x轴表示性别,使用y轴表示人数。例如在下面的实例文件bar04.py中,演示了使用库matplotlib绘制有说明信息柱状图的过程。

源码路径:codes\4\4-1\bar04.py

import matplotlib.pyplot as plt from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 mpl.rcParams['axes.unicode_minus'] = False #解决保存图像时负号'-'显示为方块的问题 plt.xlabel(u'性别') #x轴的说明信息 plt.ylabel(u'人数') #y轴的说明信息 plt.bar(x = (0,1),height = (1,0.5),width = 0.35) plt.show()

上述代码执行后的效果如图4-4所示。

图4-4  执行效果

接下来可以对x轴上的每个bar进行说明,例如设置第一个柱状图是“男”,第二个柱状图是“女”。此时可以通过如下实例文件bar05.py实现。

源码路径:codes\4\4-1\bar05.py

plt.xlabel(u'性别') plt.ylabel(u'人数') plt.xticks((0,1),(u'男',u'女')) plt.bar(x = (0,1),height = (1,0.5),width = 0.35) plt.show()

在上述代码中,函数plt.xticks()的用法和前面使用的x和height的用法差不多。如果你有几个bar,那么就对应几维的组,其中第一个参数表示文字的位置,第二个参数表示具体的文字说明。不过这里有个问题,例如有时我们指定的位置有些“偏移”,最理想的状态应该在每个矩形的中间。我们可以通过直接指定函数bar()里面的align="center"就可以让文字居中了。

plt.xlabel(u'性别') plt.ylabel(u'人数') plt.xticks((0,1),(u'男',u'女')) plt.bar(x = (0,1),height = (1,0.5),width = 0.35,align="center") plt.show()

此时的执行效果如图4-5所示。

图4-5  执行效果

接下来可以通过如下代码给柱状图表加入一个标题。

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()

在上述代码中用到了函数legend(),里面的参数必须是组。即使只有一个图例也必须是组,否则显示不正确。此时的执行效果如图4-6所示。

图4-6  执行效果

接下来还可以在每个矩形的上面标注对应的y值,此时需要使用如下通用的方法实现。

def autolabel(rects):     for rect in rects:         height = rect.get_height()         plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height))

在上述实例代码中,其中plt.text有三个参数,分别是:x坐标,y坐标,要显示的文字。调用函数autolabel()的具体实现代码如下所示。

autolabel(rect)

为了避免绘制矩形柱状图紧靠着顶部,最好能够空出一段距离,此时可以通过函数bar()的属性参数yerr来设置。一旦设置了这个参数,那么对应的矩形上面就会有一个竖着的线。当把yerr这个值设置得很小的时候,上面的空白就自动空出来了。

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

到此为止,一个比较美观的柱状图绘制完毕,将代码整理并保存在如下实例文件bar06.py中,具体实现代码如下所示。

源码路径:codes\4\4-1\bar06.py

import matplotlib.pyplot as plt from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 mpl.rcParams['axes.unicode_minus'] = False #解决保存图像时负号'-'显示为方块的问题 def autolabel(rects): for rect in rects: 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(x = (0,1),height = (1,0.5),width = 0.35,align="center",yerr=0.0001) plt.legend((rect,),(u"图例",)) autolabel(rect) plt.show()

上述代码执行后的效果如图4-7所示。

图4-7  执行效果

4.1.4  设置柱状图的颜色

请看下面的实例文件bar06-1.py,功能是使用库matplotlib绘制绿颜色的柱状图。

源码路径:codes\4\4-1\bar06-1.py

import matplotlib.pyplot as plt data = [5, 20, 15, 25, 10] plt.bar(range(len(data)), data, fc='g') plt.show()

执行效果如图4-8所示。

图4-8  执行效果

请看下面的实例文件bar06-2.py,功能是使用库matplotlib绘制不同颜色的柱状图。

源码路径:codes\4\4-1\bar06-2.py

import matplotlib.pyplot as plt data = [5, 20, 15, 25, 10] plt.bar(range(len(data)), data, color='rgb') # or `color=['r', 'g', 'b']` plt.show()

执行效果如图4-9所示。

图4-9  执行效果

今天的文章 (4-1-1)绘制柱状图:绘制基本的柱状图(1)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-16 07:30
下一篇 2024-12-16 07:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/88176.html