这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战
复习回顾
Python 为数据展示提供了大量优秀的功能包,其中 matplotlib 模块可以方便绘制制作折线图、柱状图、散点图等高质量的数据包。
关于 matplotlib 模块,我们前期已经对matplotlib进行基本框架、以及常用方法的学习
- matplotlib 模块概述:对matplotlib模块进行初步认识,对常用的方法进行学习
- matplotlib 模块底层原理:matplotlib 模块包含脚本层、美工层及后端层三层细节了解
- matplotlib 模块折线图绘制:总结折线图相关属性和方法
在 matplotlib 模块提供的图表中,除了折线图使用最多外,柱状图也是我们日常数据分析的图表。
本期,我们开始学习绘制柱状图相关属性和方法,let’s go~
- 什么是柱状图
+ 柱状图又称为条形图,是一种以长方形的长度为变量数据进行统计的图表
+ 柱状图用来比较两个或以上类型
+ 柱状图只有一个以长方形的长度为变量
+ 柱状图可以横向排列或者多维方式展示
- 柱状图使用场景
+ 柱状图适用在较小数据集的分析
+ 适用二维数据集,只比较一个维度数据差异项
+ 直观展示各个体之间数据的差异
+ 表现离散型的时间序列
- 柱状图绘制步骤
1. 导入matplotlib.pyplot模块
2. 准备数据,可以使用numpy/pandas整理数据
3. 调用pyplot.bar()绘制柱状图
- 案例展示
本次,我们分析过去5年内的产品年销量展示
+ 案例所用到的数据如下:
1
2
3
4
python复制代码import random
x_data = ["20{}年".format(i) for i in range(16,21)]
y_data = [random.randint(100,300) for i in range(6)]
+ 绘制柱状图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
scss复制代码
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=['SimHei']
plt.rcParams["axes.unicode_minus"]=False
for i in range(len(x_data)):
plt.bar(x_data[i],y_data[i])
plt.title("销量分析")
plt.xlabel("年份")
plt.ylabel("销量")
plt.show()

- 柱状体颜色填充
+ facecolor(fc)关键字
+ color 关键字
+ 颜色简称:
属性值 | 说明 | 属性值 | 说明 |
---|---|---|---|
“b”/“bule” | 蓝色 | “m”/“magenta” | 品红 |
“g” /“green” | 绿色 | “y”/“yellow” | 黄色 |
“r”/“red” | 红色 | “k”/“black” | 黑色 |
“c”/“cyan” | 青色 | “w”/“white” | 白色 |
+ rgb:
- 格式形式:(r,g,b)
- 取值范围:0~1
- 柱状描边设置
+ 柱状体边框颜色
- edgecolor 或者 ec
+ 柱状体边框样式
- linestyle 或者 ls
- 线条样式:
| 属性值 | 说明 |
| -------------- | ------ |
| "-" 、"solid" | 默认实线显示 |
| "--"、"dashed" | 虚线 |
| "-." "dashdot" | 点划线 |
| ":"、"dotted" | 虚线 |
| "None" """" | 空
+ 柱状体边框宽度
- linewidth 或者 lw
- 柱状图填充样式
+ hatch: 设置填充样式
+ 属性取值:{'/', '', '|', '-', '+', 'x', 'o', 'O', '.', '\*'} |
- 柱状图刻度标签
+ tickle label:默认使用数字标签
- 我们对 第一节柱状图添加边框样式为”–”,添加指定rgb颜色,填充圆圈
1 | python复制代码for i in range(len(x_data)): |
在柱状图中,我们会在同时对比两组数据在同一类中的表现形式,因此需要绘制堆叠柱状图
- bottom : 条形底座的y坐标,默认值为0
- 在第一节案例中,添加一组y轴数据所有数据如下:
1 | python复制代码 x_data = ["20{}年".format(i) for i in range(16,21)] |
- 再添加一次pyplot.bar方法,添加bottom属性
1 | python复制代码 plt.bar(x_data,y_data,lw=0.5,fc="r",label="Phone") |
在绘制并列的柱状图中,要控制好每个柱状体的位置和大小可以使用width属性
- width: 设置每组柱状体的宽度
- x轴:x轴的宽度每组直接也要设置好
- 例如继续改造上面案例,我们为bar1和bar2添加了width属性后,单独设置x轴并排的宽度为0.3
1 | python复制代码x_width = range(0,len(x_data)) |
柱状图中,有时候需要让柱状图水平放置,比较差异,我们这时候需要使用到barh方法
- pyplot.barh(y,width):绘制水平柱状图
- 结合上述案例,改用barh方法
1 | Python复制代码 x_data = ["20{}年".format(i) for i in range(16,21)] |
我们在查看柱状图时,有时候会需要辅助折线来查看
- 使用pyplot.plot()方法汇总折线图
- 同时使用pyplot.text()显示坐标值
- 当堆叠图时,需要计算好折线相对位置
1 | python复制代码plt.plot(x_data,y_data,color="pink",linestyle="--") |
我们需要使用Axes对象来设置坐标轴的位置
- 首先使用pyplot.gca()方法创建axes对象
- 然后使用matplotlib.spines模块调用set_position设置坐标轴位置
- set_position 设置轴位置点
- spines[]选项有”left”|”bottom”|”width”|”height”
- set_position 值格式为(位置类型,数量);位置类型;”outward”|”axes”|”data”|;数量:中心->(“轴”,0.5),零->(“数据”,0.0)
1 | python复制代码y_data = np.random.randint(100, 300,5) |
总结
本期,我们对matplotlib模块中详细学习绘制各种柱状图标相关属性和方法,在遇到需要直观展示离散数据点的差异时,我们可以使用bar()或者barh()绘制美观的图表。
以上是本期内容,欢迎大佬们点赞评论,下期见~
本文转载自: 掘金