千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > python 绘制柱状图

python 绘制柱状图

来源:千锋教育
发布人:xqq
时间: 2024-01-24 20:18:14 1706098694

Python是一种强大的编程语言,它可以用来完成各种各样的任务。其中之一就是绘制柱状图。柱状图是一种常见的数据可视化方式,可以用来比较不同类别或者不同时间点的数据。在Python中,我们可以使用matplotlib库来绘制柱状图。

_x000D_

要绘制柱状图,我们需要先准备好数据。假设我们有一个学生的成绩单,包含了他们的数学、英语和历史成绩。我们可以将这些成绩存储在一个字典中,然后使用matplotlib库来绘制柱状图。

_x000D_

`python

_x000D_

import matplotlib.pyplot as plt

_x000D_

grades = {'math': 90, 'english': 85, 'history': 80}

_x000D_

plt.bar(grades.keys(), grades.values())

_x000D_

plt.show()

_x000D_ _x000D_

上面的代码中,我们首先定义了一个字典grades,包含了学生的三门成绩。然后使用plt.bar()函数来绘制柱状图。这个函数的第一个参数是柱子的位置,我们使用字典的keys()方法来获取所有的科目名称。第二个参数是柱子的高度,我们使用字典的values()方法来获取所有的成绩。最后使用plt.show()函数来显示图像。

_x000D_

这段代码的运行结果如下图所示:

_x000D_

![柱状图](https://img-blog.csdn.net/20180511133846406)

_x000D_

我们可以看到,这个柱状图显示了学生的三门成绩,每个柱子代表了一个科目,柱子的高度代表了学生的成绩。这个柱状图非常简单,但是我们可以通过修改代码来改变它的样式和布局。

_x000D_

接下来,让我们来回答一些关于Python绘制柱状图的常见问题。

_x000D_

## Q&A

_x000D_

### Q1:如何在柱状图上添加标签?

_x000D_

有时候,我们需要在柱状图上添加标签,以便更好地说明数据。我们可以使用plt.text()函数来在柱子上添加标签。这个函数的第一个参数是标签的位置,我们可以使用柱子的位置和高度来确定。第二个参数是标签的内容。

_x000D_

`python

_x000D_

import matplotlib.pyplot as plt

_x000D_

grades = {'math': 90, 'english': 85, 'history': 80}

_x000D_

plt.bar(grades.keys(), grades.values())

_x000D_

for x, y in zip(grades.keys(), grades.values()):

_x000D_

plt.text(x, y, str(y))

_x000D_

plt.show()

_x000D_ _x000D_

上面的代码中,我们使用了一个for循环来遍历所有的柱子。在循环中,我们使用zip()函数来同时遍历柱子的位置和高度。然后使用plt.text()函数来在柱子上添加标签,标签的内容是成绩的数值。最后使用plt.show()函数来显示图像。

_x000D_

这段代码的运行结果如下图所示:

_x000D_

![柱状图标签](https://img-blog.csdn.net/20180511134425961)

_x000D_

我们可以看到,每个柱子上都有一个标签,标签的内容是成绩的数值。

_x000D_

### Q2:如何改变柱状图的颜色和样式?

_x000D_

默认情况下,matplotlib库会自动为每个柱子选择颜色和样式。但是有时候,我们需要手动指定柱子的颜色和样式。我们可以使用plt.bar()函数的color和edgecolor参数来指定柱子的颜色和边框颜色。我们可以使用plt.bar()函数的hatch参数来指定柱子的样式。

_x000D_

`python

_x000D_

import matplotlib.pyplot as plt

_x000D_

grades = {'math': 90, 'english': 85, 'history': 80}

_x000D_

plt.bar(grades.keys(), grades.values(), color=['r', 'g', 'b'], edgecolor='k', hatch='//')

_x000D_

plt.show()

_x000D_ _x000D_

上面的代码中,我们使用了color参数来指定柱子的颜色,使用edgecolor参数来指定柱子的边框颜色,使用hatch参数来指定柱子的样式。color参数可以接受一个包含颜色代码的列表,每个颜色代码对应一个柱子。edgecolor参数可以接受一个颜色代码,用来指定柱子的边框颜色。hatch参数可以接受一个字符串,用来指定柱子的样式。

_x000D_

这段代码的运行结果如下图所示:

_x000D_

![柱状图颜色样式](https://img-blog.csdn.net/2018051113525977)

_x000D_

我们可以看到,每个柱子的颜色、边框颜色和样式都被手动指定了。

_x000D_

### Q3:如何绘制水平柱状图?

_x000D_

默认情况下,plt.bar()函数会绘制垂直柱状图。但是有时候,我们需要绘制水平柱状图。我们可以使用plt.barh()函数来绘制水平柱状图。这个函数的使用方法和plt.bar()函数类似。

_x000D_

`python

_x000D_

import matplotlib.pyplot as plt

_x000D_

grades = {'math': 90, 'english': 85, 'history': 80}

_x000D_

plt.barh(list(grades.keys()), list(grades.values()))

_x000D_

plt.show()

_x000D_ _x000D_

上面的代码中,我们使用了plt.barh()函数来绘制水平柱状图。这个函数的第一个参数是柱子的位置,我们使用list()函数将字典的keys()和values()方法返回的对象转换为列表。第二个参数是柱子的高度。最后使用plt.show()函数来显示图像。

_x000D_

这段代码的运行结果如下图所示:

_x000D_

![水平柱状图](https://img-blog.csdn.net/20180511135712359)

_x000D_

我们可以看到,这个柱状图是水平的,每个柱子代表了一个科目,柱子的长度代表了学生的成绩。

_x000D_

### Q4:如何绘制堆叠柱状图?

_x000D_

有时候,我们需要绘制堆叠柱状图,以便更好地比较不同类别或者不同时间点的数据。我们可以使用plt.bar()函数的bottom参数来绘制堆叠柱状图。这个参数可以接受一个列表,用来指定每个柱子的底部位置。

_x000D_

`python

_x000D_

import matplotlib.pyplot as plt

_x000D_

grades1 = {'math': 90, 'english': 85, 'history': 80}

_x000D_

grades2 = {'math': 80, 'english': 75, 'history': 70}

_x000D_

plt.bar(grades1.keys(), grades1.values())

_x000D_

plt.bar(grades2.keys(), grades2.values(), bottom=list(grades1.values()))

_x000D_

plt.show()

_x000D_ _x000D_

上面的代码中,我们定义了两个字典grades1和grades2,分别代表了两个时间点的数据。然后使用plt.bar()函数来绘制两个柱状图。第一个柱状图的底部位置是0,第二个柱状图的底部位置是第一个柱状图的高度。最后使用plt.show()函数来显示图像。

_x000D_

这段代码的运行结果如下图所示:

_x000D_

![堆叠柱状图](https://img-blog.csdn.net/20180511140410870)

_x000D_

我们可以看到,这个柱状图是堆叠的,每个柱子都代表了一个科目,每个柱子的高度是两个时间点的数据之和。

_x000D_

### Q5:如何绘制分组柱状图?

_x000D_

有时候,我们需要绘制分组柱状图,以便更好地比较不同类别或者不同时间点的数据。我们可以使用plt.bar()函数的width参数来绘制分组柱状图。这个参数可以接受一个浮点数,用来指定每个柱子的宽度。

_x000D_

`python

_x000D_

import matplotlib.pyplot as plt

_x000D_

import numpy as np

_x000D_

grades1 = {'math': 90, 'english': 85, 'history': 80}

_x000D_

grades2 = {'math': 80, 'english': 75, 'history': 70}

_x000D_

width = 0.3

_x000D_

x = np.arange(len(grades1))

_x000D_

plt.bar(x, grades1.values(), width=width, label='time1')

_x000D_

plt.bar(x+width, grades2.values(), width=width, label='time2')

_x000D_

plt.xticks(x+width/2, grades1.keys())

_x000D_

plt.legend()

_x000D_

plt.show()

_x000D_ _x000D_

上面的代码中,我们定义了两个字典grades1和grades2,分别代表了两个时间点的数据。然后使用plt.bar()函数来绘制两个柱状图。我们使用了numpy库的arange()函数来生成一个等差数列,用来确定每个柱子的位置。然后使用width参数来指定每个柱子的宽度。最后使用plt.xticks()函数来设置x轴的标签,使用plt.legend()函数来添加图例,最后使用plt.show()函数来显示图像。

_x000D_

这段代码的运行结果如下图所示:

_x000D_

![分组柱状图](https://img-blog.csdn.net/20180511141335192)

_x000D_

我们可以看到,这个柱状图是分组的,每个柱子代表了一个科目,每个时间点的数据用不同的颜色表示。

_x000D_

##

_x000D_

我们介绍了如何使用Python绘制柱状图,并回答了一些关于Python绘制柱状图的常见问题。柱状图是一种常见的数据可视化方式,可以用来比较不同类别或者不同时间点的数据。在Python中,我们可以使用matplotlib库来绘制柱状图。相信读者们已经掌握了如何绘制柱状图以及如何修改柱状图的样式和布局。如果你有任何问题或者建议,欢迎在评论区留言。

_x000D_
tags: python教程
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT