IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 数据分析之数据展现---用matplotlib 库绘制图形 -> 正文阅读

[Python知识库]数据分析之数据展现---用matplotlib 库绘制图形

作者:recommend-item-box type_blog clearfix

matplotlib库

1.1、概述:

1、在 python 数据分析领域,matplotlib 库是与 numpy 库、pandas 库并驾齐驱的三库之一,被称作 python 数据分析的“三剑客”
2、matplotlib 库相较于 pandas 绘图以及 seaborn 绘图工具更为底层,因此,matplotlib库中的绘图函数、参数相对更多,我们可以根据自己的风格自由选择。

1.2、pyplot模块

pyplot是matplotlib库下面的一个绘图模块
from matplotlib import pyplot as plt #导入pyplot模块并简写为plt

1.3、matplotlib 库绘图

1.3.1、画布的生成与保存:plt.figure()

        figure--[?f?ɡ?(r)]--图形、  size-- [sa?z] --大小

一张图的三个基本要素为:画布,图表,元素,对图表进行解释的内容是图表元素
在这里插入图片描述

In [ 12 ]
1 # 生成画布,并设置画布的大小
2 plt.figure(figsize=(6, 6))

Out [ 12 ]
<Figure size 432x432 with 0 Axes>
<Figure size 432x432 with 0 Axes>

参数 figsize 可以控制画布的长和宽,一般用元组的形式进行赋值
<Figure size 432x432 with 0 Axes>表示生成了一个空白的画布对象。
画布大小为 6 英寸x6 英寸,默认分辨率为 72 像素/英寸,所以像素为 432x432
plt.savefig():将画布保存到本地,如:plt.savefig(’./工作/各月总订单量趋势图.png’)

1.3.2、 设置 x/y 坐标值

x/y 坐标均为可迭代对象,可以理解为有序的元素序列,比如 x = (x1, x2, x3, ……, xn),y = (y1, y2, y3, ……, yn)。

1.3.3、绘制折线图和柱状图

1.3.3.1绘制折线图:plt.plot()

示例一、

# 生成画布,并设置画布的大小
plt.figure(figsize=(6, 6))
# 设置 x/y 坐标值
x = pd.Series(['第一季度', '第二季度', '第三季度', '第四季度'])
y = pd.Series([59, 70, 68, 56])

# 绘制折线图,并调整线条颜色为湖蓝色,color参数表示图表的颜色
plt.plot(x, y, color='dodgerblue')

通过数据清洗后得到一个 的Series 对象:order_number
月份
1 13852.0
2 389319.0
3 1961480.0
4 546276.0
5 158188.0
6 22222.0
Name: 订单量, dtype: float64
Series 对象的 index 和 values 属性可以分别获取左边的索引和右边的数据 values-[?v?lju?z] -价值观、index-- [??ndeks] --指数;指标;索引;标志
array – [??re?] --排列,数组,阵列

# 获取Series对象左边的索引,返回的是一个 index 对象,里面存储了月份信息。
order_number.index
# 获取Series对象右边的数据,返回的是一个 array 对象。
order_number.values

示例二、

1 # 设置 x 坐标值
2 x = order_number.index
3# 设置 y 坐标值
4 y = order_number.values
5 # 生成画布,并设置画布的大小
6 plt.figure(figsize=(6, 6))
7 # 绘制折线图
8 plt.plot(x, y)

plt.plot()函数参数表:
在这里插入图片描述
linewidth 可以设置线条的宽度,常见为数值类型。
参数 color 可以设置线条的的颜色。如红色:color=‘r’(‘red’可以简写为’r’)
下图为 matplotlib 库支持的颜色,只需要向 color 传入颜色块旁边对应的英文单词即可,常见为字符串类型。
在这里插入图片描述

  marker-- [?mɑ?k?(r)] --n.(表示方位的)标记,记号;标志;标识;

参数 marker 可以设置数据标记点的形状,有点、圆、加号等,常见为字符串类型
在这里插入图片描述
参数 markersize 和 markerfacecolor 用来设置数据标记点的大小和填充颜色。markersize 的设置方法与 linewidth 参数相同,而 markerfacecolor 参数的设置方法与 color 参数一致。
face-- [fe?s] --v,面对;面向;正对 n,脸;面孔;

**示例:**数据标记点的形状为圆:marker=‘o’;大小为 10:markersize=10;填充颜色为白色:markerfacecolor=‘w’。
plt.plot(x, y, linewidth=3, color=‘r’, marker=‘o’,
markersize=10, markerfacecolor=‘w’)
效果如下:
在这里插入图片描述
绘制折线图完整代码示例:

下方代码中order_number为Series对象,见本章1.3.3.1

In [ 36 ]
1 # 生成画布,并设置画布的大小
2 plt.figure(figsize=(6, 6))
3 # 设置 x/y 坐标值
4 x = order_number.index
5 y = order_number.values
6 # 绘制折线图,并调整线条、标记点的样式
7 plt.plot(x, y, linewidth=3, color='r', marker='o',
8
        markerfacecolor='w', markersize=10)
9 # 设置图表标题名及字体大小
10 plt.title('各月总订单量趋势图', fontsize=20)
11 # 设置坐标轴的刻度字体大小
12 plt.xticks(fontsize=12)
13 plt.yticks(fontsize=12)
14 # 设置坐标轴的标题名及字体大小
15 plt.xlabel('月份', fontsize=15)
16 plt.ylabel('各月总订单量(百万)', fontsize=15)
17 # 保存画布
18 plt.savefig('./工作/各月总订单量趋势图.png')

输出效果:
在这里插入图片描述
思维导图(以绘制多条折线图为例)
在这里插入图片描述

1.3.3.2绘制 柱壮图:plt.bar()

plt.bar()的座标参数是 x 和 height,height 表示柱子的高,对应 y 坐标值。

       height--[ha?t]--高度、 color--[?k?l?(r)]--颜色
# 生成画布,并设置画布的大小
plt.figure(figsize=(6, 6))
# 设置 x/y 坐标值
x = pd.Series(['第一季度', '第二季度', '第三季度', '第四季度'])
y = pd.Series([59, 70, 68, 56])

# 绘制柱状图,并调整颜色为深橘色,透明度为 60%, alpha 参数表示图表的透明度
plt.bar(x, height=y, color='darkorange', alpha=0.6)

plt.bar()也可以和plt.plot()一样通过调整其中的参数去改变柱子的样式,见下图
在这里插入图片描述
1 color 和折线图中的 color 略有不同,当设置一种颜色时,传入值的类型为字符串;设置多种颜色时,传入值的类型为列表,如:color=[‘r’, ‘g’, ‘g’, ‘g’, ‘g’, ‘b’]
柱子的颜色是按照列表中颜色字符串的顺序设置的。

2 width 则需要传入0, 1区间 (大于 0,小于等于 1) 内的浮点数,数值越大表示柱子的宽度越宽;当 width 的值为 1 时,柱子之间的间隙就为 0。

3 alpha参数 可以设置柱子颜色的透明度,需要传入(0, 1]区间内的浮点数,数值越小,表示柱子颜色越浅;相反,则越深。适当地调整颜色深浅,可以提升视觉舒适度。

完整代码示例:

In [ 57 ]
1 # 生成画布,并设置画布的大小
2 plt.figure(figsize=(6, 6))
3 # 设置 x/y 坐标值
4 x = mask_price.index
5 y = mask_price.values
6 # 绘制柱状图,并调整柱子的样式
7 plt.bar(x, height=y, color=['r', 'g', 'g', 'g', 'g', 'b'], width=0.6,   alpha=0.6)
8 # 设置图表标题名及字体大小
9 plt.title('各月平均单价分布图', fontsize=20)
10 # 设置坐标轴的刻度字体大小
11 plt.xticks(fontsize=12)
12 plt.yticks(fontsize=12)
13 # 设置坐标轴的标题名及字体大小
14 plt.xlabel('月份', fontsize=15)
15 plt.ylabel('各月平均单价(元)', fontsize=15)
16 # 设置数据标签
17 for a, b in zip(x, y):
18    plt.text(a, b, '%.0f' % b, ha='center', va='bottom', fontsize=12)
19 # 保存画布
20 plt.savefig('./工作/各月平均单价分布图.png')

输出效果:
在这里插入图片描述

思维导图:
在这里插入图片描述

1.3.3.3绘制饼图:plt.pie()

x 表示饼图中各个扇形面积的大小。

In [ 25 ]
1 # 生成画布,并设置画布的大小
2 plt.figure(figsize=(6, 6))
3 # 设置扇形面积值,第一个占比为:59/(59+70+68+56)=23.32%
4 x = pd.Series([59, 70, 68, 56])
5 # 设置百分比小数的位数:保留百分比小数点后两位
6 autopct='%.2f%%'
7 # 设置百分比字体大小和颜色
8 textprops = {'fontsize': 12, 'color': 'black'}
9 # 设置饼图的“爆炸效果”:让扇形远离圆心
10 explode = [0.1, 0, 0, 0]
11 # 设置不同扇形的颜色
12 colors = ['cornflowerblue', 'salmon', 'yellowgreen', 'orange']
13 # 绘制饼图
14 plt.pie(x, autopct=autopct, textprops=textprops,
15
        explode=explode, colors=colors)
16 # 设置图表标题名及字体大小
17 plt.title('闪光科技2020年各季度研发费用占比饼图', fontsize=20)
18 # 设置图例
19 plt.legend(['第一季度', '第二季度', '第三季度', '第四季度']) 
运行
Out [ 25 ]
<matplotlib.legend.Legend at 0x7f559aee1a20>

在这里插入图片描述
绘制饼图的相关参数:
在这里插入图片描述

1.4、设置图表标题:plt.title(label,fontsize)

参数:label 设置图表的标题名,常见为字符串类型,label–[?le?bl]–标签
参数: fontsize 设置标题的字体大小,需要向它传入一个代表字体大小的数
值。
例:

# 生成画布,并设置画布的大小
plt.figure(figsize=(6, 6))
# 绘制柱状图
plt.bar(x, height=y, color='darkorange', alpha=0.6)
# 设置图表标题名及字体大小
plt.title(label='想要填入的标题名称', fontsize=20)

如果想设置更丰富的字体样式,可以用 fontdict 参数代替 fontsize。
fontdict 是一个包含许多参数的字典,以思源黑体字体为例,详见以下表格
在这里插入图片描述

1.5、设置坐标轴

在这里插入图片描述

1.5.1设置 x、y 轴刻度:plt.xticks()和 plt.yticks()

                 font--[f?nt]--字体   size--[sa?z]--大小

plt.xticks( )
plt.yticks( )
坐标轴刻度是可以自定义的,比如调整刻度的间隔、标签名称等,略…
参数fontsize,设置字体大小,它的用法可以参考 plt.title()中 fontsize 的用法,见本章1.4节

1.5.2、设置坐标轴标题:plt.xlabel()和 plt.ylabel()

坐标轴标题主要对坐标轴刻度值的含义进行描述
在这里插入图片描述
plt.xlabel(xlabel,fontsize)
plt.ylabel(ylabel,fontsize)
第一个参数设置坐标轴的标题名,常见为字符串类型
第二个参数 fontsize同上
例:

# 生成画布,并设置画布的大小
plt.figure(figsize=(6, 6))
# 绘制柱状图
plt.bar(x, height=y, color='darkorange', alpha=0.6)
# 设置 x、y 轴标题分别为'季度'、'研发费用(百万元)',字体大小均为 15
plt.xlabel(xlabel='季度',fontsize=15)
#也可以写作:plt.xlabel('季度', fontsize=15)  
plt.ylabel(ylabel='研发费用(百万元)',fontsize=15)

另外可以添加参数ha和va,设置标题文本的对齐方式
与水平对齐方式有关的参数 ha,可选’left’、‘right’、‘center’等,以及与垂直对齐方式有关的参数 va,可选’center’、 ‘top’、‘bottom’、'baseline’等。

1.6、设置图例:plt.legend(labels)

   legend-- [?led??nd] --n.传奇;传说;(地图或书中图表的)图例;说明

参数labels表示图例名称,对应图中的多个条件,通常传入可迭代对象,比如列表、Series 对象等。
如:plt.legend(‘变化’,‘分布’)
在这里插入图片描述
例:调用柱状图和折线图的绘图函数,生成一个复合图表。

In [ 22 ]
1 # 生成画布,并设置画布的大小
2 plt.figure(figsize=(6, 6))
3 # 设置 x/y 坐标值
4 x = pd.Series(['第一季度', '第二季度', '第三季度', '第四季度'])
5 y = pd.Series([59, 70, 68, 56])
6 # 绘制折线图
7 plt.plot(x, y, color='dodgerblue')
8 # 绘制柱状图
9 plt.bar(x, height=y, color='darkorange', alpha=0.6)
?10 # 设置图例为'研发费用变化'、'研发费用分布'
11 plt.legend(['研发费用变化','研发费用分布'])

Out [ 22 ]
<matplotlib.legend.Legend at 0x7fbe4b217400>
在这里插入图片描述

1.7 小结

1 参数label 可以表示图表标题名,常见为字符串类型
2 参数 xlabel、ylabel 分别表示 x 轴、y 轴标题名,常见为字符串类型
3 参数 labels 表示图例名称,常见为可迭代对象

1.8、设置数据标签:plt.text(x、y、s、ha、va fontsize)

数据标签是指坐标点上方显示的标签,用于呈现每个坐标点的数据信息。
在这里插入图片描述
调用 plt.text()函数可以在图表的指定位置添加文本,但是每次只能添加一个。
参数x、y 表示所添加文本的位置,受到函数本身的属性限制,常见为数值或者字符串类型,这与绘图函数中 x、y 可以传入可迭代对象有很大的差异。
s 表示数据标签的文本内容,常见为数值或者字符串类型。
与水平对齐方式有关的参数 ha,可选’left’、‘right’、‘center’等,以及与垂直对齐方式有关的参数 va,可选’center’、 ‘top’、‘bottom’、'baseline’等。

例:plt.text(‘第三季度’,50, ‘八八’, ha=‘center’, va=‘bottom’, fontsize=12
参数x y s 对应:第三季度’,50, ‘八八’,意思为:在X轴第三季度柱子上,对应Y轴50刻度的位置上添加数据标签八八。即标签八八添加在X、Y轴交叉点

在这里插入图片描述

示例代码:

In [ 21 ]
1 # 生成画布,并设置画布的大小
2 plt.figure(figsize=(6, 6))
3 # 绘制柱状图
4 plt.bar(x, height=y, color='darkorange', alpha=0.6)
5
?6# 设置数据标签
7 plt.text('第一季度', 59, 59, ha='center', va='bottom', fontsize=12)
8 plt.text('第二季度', 70, 70, ha='center', va='bottom', fontsize=12)
9 plt.text('第三季度', 68, 68, ha='center', va='bottom', fontsize=12)
10 plt.text('第四季度', 56, 56, ha='center', va='bottom', fontsize=12)

Out [ 21 ]
Text(第四季度, 56, '56')

在这里插入图片描述
这样添加数据标签太麻烦了,可以借助 zip() 函数实现简单化。
zip()函数理解为拉链,x=(x1, x2, x3,……, xn)为拉链的左边,y=(y1, y2, y3,……, yn)为拉链的右边,经过 zip()函数,就合并为(x1, y1), (x2, y2), (x3, y3),……,(xn, yn)。
例:

In [ 22 ]
1 x = pd.Series(['第一季度', '第二季度', '第三季度', '第四季度'])
2 y = pd.Series([59, 70, 68, 56])
3 for a, b in zip(x, y):
4	print(a, b)
运行
Out [ 22 ]
第一季度 59
第二季度 70
第三季度 68
第四季度 56

zip()函数可以从 x、y 元素序列中依次取出元素,按照顺序进行一对一匹配。

用zip()函数那前面的代码就可以这样写:

In [ 23 ]
1 #生成画布,并设置画布的大小
2 plt.figure(figsize=(6, 6))
3 #绘制柱状图
4 plt.bar(x, height=y, color='darkorange', alpha=0.6)
5 # 设置数据标签
6 x = pd.Series(['第一季度', '第二季度', '第三季度', '第四季度']) 
7 y = pd.Series([59, 70, 68, 56])
8 for a, b in zip(x, y):
9
    plt.text(a,b,b,ha='center', va='bottom', fontsize=12)

思维导图汇总

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:19:48  更:2021-08-21 15:21:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 11:55:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计