PYthon第三方扩展库——Matplotlib

第三方扩展库——Matplotlib

1.简介

Matplotlib 是个python 2D绘图库,是python 2D绘图领域使用最广泛的套件。它能使用这很轻松地将数据图形化,并且提供多样化的输出格式

Matplotlib非常强大,只需几行代码就可绘制各种折线图、饼图、柱形图、直方图、 散点图等

Matplotlib不仅尅绘制最基础的图表,还可以绘制一些高及图表,例如:堆叠柱形图,渐变饼形图、等高线柱形图

不仅如此,Matplotlib还可以绘制3D图。例如:三维柱形图、三维曲面图等

2.优点

Matplotlib的优势在于:

  • 免费

  • 继承了python语法的优点,面向对象、易读、易维护、代码简洁优美

  • 可借助python强大丰富的拓展模块嵌入在图形用户界面应用程序中,也可嵌入在网页中

Matplotlib图表初体验

1.导入快速绘制的函数库——PYPLOT子库

pyplot是Matplotlib的子库,该子库可快速的绘制2D图表

使用python 的导入模块语句导入Matplotlib库的pyplot子库,代码如下:

import mMatplotlib.pyplot as plt

2.绘制图表——plot函数

使用Matplotlib模块的plot函数,代码如下:

#绘制图表,制定x轴和y轴数据
#以季度销售额为例,1-3月份销售额为257,4-6月份销售额为301,7-9月份销售额为428,10-12月份销售额为475
#x轴对应月份
x = ["1-3", "4-6", "7-9", "10-12"]
​
y = [257,301, 428, 475]
plt.plot(x, y)
plt.show()

3.保存和显示图标——show函数

在完成图表绘制后,在本机上显示图表,代码如下:

#显示图表
plt.show()

完整代码及效果图

绘制第一张图表,完整程序代码如下:

#导入Matplotlib库的pyplot模块
import matplotlib.pyplot as plt
#以季度销售额为例,1-3月份销售额为257,4-6月份销售额为301,7-9月份销售额为428,10-12月份销售额为475
#x轴对应月份
x = ["1-3", "4-6", "7-9", "10-12"]
#y轴对应销售额
y = [257, 428, 475]
plt.plot(x, y)
#显示图表
plt.show()
​

plot函数绘制图表

语法

Matplotlib 基本绘图主要使用plot函数,语法如下:

Matplotlib.pyplot.plot(x,y,format_string,**kwargs)

参数说明

  • x:x轴数据,用数组表示。可选参数,默认为range(len(y))

  • y:y轴数据,用数组表示

  • format_string:控制曲线格式的字符串,包括颜色,线条样式和标记样式可选参数

  • *kwargs:可选参数、关键值参数,比如,输入参数为:(1,2,3,4,a=1,b=2,c=3)

    *args=(1,2,3,4,k), *kwargs={'a':1,'b':2',c':3}

示例1:绘制简单的折线图

#导入Matplotlib库的pyplot模块
import matplotlib.pyplot as plt
#以季度销售额为例,1-3月份销售额为257,4-6月份销售额为301,7-9月份销售额为428,10-12月份销售额为475
#x轴对应月份
x = ["1-3", "4-6", "7-9", "10-12"]
#y轴对应销售额
y = [257, 428, 475]
plt.plot(x, y)
#显示图表
plt.show()

示例2:绘制气温折线图

示例1中的数据是通过一维数组创建的。下面使用一份气温数据的Excel文件实现气温折线图,此图总共有两列数据,一列是对应的气温。具体如下图所示:

日期 气温
1 18
2 14
3 13
4 20
5 18
6 16
7 10
8 9
9 7
10 4
11 18
12 20
13 18
14 14

导入气温表的数据,分析14天气温情况,程序代码如下:

import pandas as pd  #导入pandas模块
#导入Matplotlib库的pyplot模块
import matplotlib.pyplot as plt
#添加黑体字体并解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
#导入Excel文件
df = pd.read_excel(r'./././...xlsx')
x = df['日期']    #x轴数据
y = df['气温']    #y轴数据
plt.plot(x,y)#绘制折线图
plt.show()#显示图表

增加需求

美化气温直线图,使其添加线条、标记样式、坐标样式、标题及图例

图表的常用设置

  • 颜色设置

  • 线条设置

  • 标记样式

  • 设置画布

  • 参数配置

  • 设置坐标样式

  • 文本样式

  • 图例及标题

示例:设置颜色和线条

color参数用于设置线条颜色

lifestyle参数用于设置线条的样式

marker参数用于设置标记样式

下面为“14天气温折线图”、设置颜色和线条、并在实际气温位置进行标记,关键代码如下:

#红色,实线,实际气温位置使用实心圆标记
plt.plot(x, y, color = 'r',linestyle = '-', marker = '0') 

示例:自定义一个蓝绿色画布

Matplotlib中可以使用figure函数设置画布大小、分辩率、颜色和边框等

由于Matplotlib的图像均位于绘图对象中,在绘图前,先要创建绘图对象。关键代码如下:

#画布大小为6x4(英寸)背景色为蓝绿色
plt.figure(figsize=(6,4),facecolor='c')

示例:设置坐标轴

设置x轴和y轴标题主要xlabel函数ylabel函数

下面为气温折线图设置坐标轴标题,其中,设置x轴标题为“2022年3月”,y轴标题为"最高气温"。程序代码如下:

#x轴标题
plt.xlabel('2022年3月')
#y轴标题
plt.ylabel('最高气温')

示例:设置坐标轴范围

坐标轴范围是指x轴和y轴的取值范围。设置坐标轴范围只要使用xlim函数和ylim函数

设置x轴(日期)范围为0~14 y轴(气温)范围为4~20 ,关键代码如下:

plt.xlim(0,14)      #x轴范围
plt.ylim(4,20)       #y轴范围

示例:设置网格线

在Matplotlib中可以使用grid函数生成网格线。该函数有很多参数,如颜色、网格线的方向(参数,axis='x'隐藏x轴网格线,axis='y'隐藏y轴网格线)、网格线样式和网格线宽度等,下面为图表设置网格线,关键代码如下:

#灰度值为0.5,线条为双划线,线条宽度为1
plt.grid(color='0.5',lifestyle='--',linewidth=1)

示例:为折线图添加文本标签

使用text函数给图表中指定的数据点添加文本标签

#zip(x,y):打包为元组的列表,元素的个数与最短的列表一致
for a, b in zip(x,y):
 plt.text(a, b, '%d℃'%b, ha='center',va='bottom', fontsize=12)      #添加文本标签

示例:为折线图设置标题

为图表设置标题使用title函数

下面图表设置标题为“北京14天气温折线图”,关键代码如下:

#设置图表标题,字体大小为18
plt.title('北京14天气温折线图',fontsize=18)

示例:为折线图设置图例

为图表设置图例主要使用legend函数

为“北京14天气温折线图”添加 “ 气温” 图例,显示位置为右下方显示,关键代码如下:

#添加图例
plt.legend (('气温',),loc='lower right',fontsize= 10)

示例:为折线图 添加注释

annotate函数用于在图表上给数据添加文本注释,而且支持带箭头的画线工具,方便我们在合适的位置添加描述信息

在“北京14天气温折线图“中用箭头指示最低气温,关键代码如下:

#注释内容"最低气温",被标注的坐标(10,4)
#注释文本坐标(11.5,2.5),注释的颜色为绿色,字号为14
#箭头的颜色为绿色,箭头两端相对于箭头总长或收缩0.08
plt.annotate('最低气温',xy=(10,4),xytext=(115,2.5),color='g',fontsize=14,arrowprops=dict(facecolor='g',shrink=0.08))

完整代码如下:

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_excel(r'D:\xlearn\博客笔记\Temperature.xlsx')
plt.figure(figsize=(6, 4), facecolor='c')
x = df['日期']
y = df['气温']
plt.plot(x, y, color='r', linestyle='-', marker='2')
plt.xlabel('2022年3月')
plt.ylabel('最高气温')
plt.xlim(0, 14)
plt.ylim(4, 20)
plt.plot(x, y)
plt.grid(color='0.5', linestyle='--', linewidth=1)
for a, b in zip(x, y):
    plt.text(a, b, '%d℃' % b, ha='center', va='bottom', fontsize=12)
plt.title('北京14天气温折线图', fontsize=18)
plt.legend(('气温',), loc='lower right', fontsize=10)
plt.annotate('最低气温', xy=(10, 4), xytext=(115, 2.5), color='g', fontsize=14, arrowprops=dict(facecolor='g', shrink=0.08))
plt.show()

PYthon第三方扩展库——Matplotlib_第1张图片

 

你可能感兴趣的:(matplotlib,python,开发语言)