pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)

Python matplotlib库用法笔记
  • 一、了解Matplotlib库
    • 1 Matplotlib是什么
    • 2 Matplotlib的作用
    • 3利用Matplotlib做一个简单的画图
      • 3.1matplotlib.pyplot模块
      • 3.2画图
    • 4 Matplotlib的三层结构
      • 4.1容器层
      • 4.2 辅助显示层
      • 4.3图像层
  • 二、折线图
    • 1 折线图的绘制与显示
      • 1.1设置图形的风格
    • 2 设置画布属性
      • 2.1 代码示例
    • 3 图片的保存
    • 4 设置辅助显示层
      • 4.1 自定义x,y刻度
      • 4.2 添加网格显示
      • 4.3添加描述信息
    • 5 设置图像层
      • 5.1 再添加一条折线
    • 6 多个坐标系显示折线图
  • 三、散点图
    • 3.1散点图的绘制
  • 四、柱状图
    • 4.1一个类别单个柱状图
    • 4.2一个类别多个柱状图
  • 五、直方图
    • 5.1 直方图与柱状图的区别
    • 5.2 直方图的绘制
  • 六、饼图
    • 6.1 饼图的绘制

用于日常学习的积累,如有不足请多多指教。

一、了解Matplotlib库1 Matplotlib是什么

Matplotlib可以看成是3个缩写单词拼接而成:·mat(matrix) 矩阵·plot 绘图·lib(library)库

Matplotlib 是一个 Python 的二维图表库。

2 Matplotlib的作用

将数据可视化,是数据更加置换

3利用Matplotlib做一个简单的画图3.1matplotlib.pyplot模块

matplotlib.pyplot模块包含了一系列类似于matlab的画图函数。

import matplotlib.pyplot as plt

3.2画图

import matplotlib.pyplot as plt plt.figure() #创建画布 plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像 plt.show() #显示图像

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(1)

4 Matplotlib的三层结构4.1容器层
  1. 画板层Canvas(位于最底层,一般用户接触不到)位于最底层的系统层,充当画板的角色。
  2. 画布层Figure(在Canvas层之上)是用户操作的第一层应用层,充当画布的角色。

plt.figure()

  1. 绘图区/坐标系Axes(在Figure层之上)应用层的第二层。

plt.subplots()

  1. 相互关系
  • 一个figure可以包含多个axes,一个axes只能属于一个figure。
  • 一个axes(绘图区/坐标系)可以包含多个axis(坐标轴)。
4.2 辅助显示层

辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。

4.3图像层

图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。

二、折线图1 折线图的绘制与显示
  1. 折线图绘制的步骤
    1. 创建画布
    2. 绘制图像
    3. 显示图像具体和上面的做一个简单的画图的代码一致:

import matplotlib.pyplot as plt plt.figure() #创建画布 plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像 plt.show() #显示图像

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(2)

1.1设置图形的风格

plt.plot(x,y,color='k',linestyle=':') #color设置线条颜色 #linestyle设置线条风格

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(3)

对上述代码进行修改:

import matplotlib.pyplot as plt x=[1,2,3,4,5,6] y=[1,4,9,16,25,36] plt.figure() #创建画布 plt.plot(x,y,color='k',linestyle=':') #绘制图像 plt.show() #显示图像

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(4)

2 设置画布属性

plt.figure(figsize=(),dpi=) #figsize:指定图的长宽 #dpi:图像的清晰度

2.1 代码示例

import matplotlib.pyplot as plt plt.figure(figsize=(5,5),dpi=100) #创建画布 plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像 plt.show() #显示图像

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(5)

3 图片的保存

import matplotlib.pyplot as plt plt.figure(figsize=(5,5),dpi=100) #创建画布 plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像 plt.savefig("1.png") #保存在相对路径上 plt.show() #显示图像

注意:plt.savefig(path)不能写在plt.show() 之后。(plt.show()会释放figgure的资源,此时在保存图片就是空图片)

4 设置辅助显示层4.1 自定义x,y刻度

#自定义x轴 plt.xticks(x,tick labels) #刻度标签(tick labels)可以对应替换x #自定义y轴 plt.yticks(y,tick labels) #刻度标签(tick labels)可以对应替换y

  • 代码示例:

import matplotlib.pyplot as plt x=[1,2,3,4,5] y=[1,4,9,16,25] plt.figure(figsize=(5,5),dpi=100) plt.plot(x,y) plt.xticks(x,["一","二","三","四","五"]) plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(6)

注意:默认字体不支持中文,会变成上图的白色框框。

import matplotlib.pyplot as plt x=[1,2,3,4,5] y=[1,4,9,16,25] plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题 plt.figure(figsize=(5,5),dpi=100) plt.plot(x,y) plt.xticks(x,["一","二","三","四","五"]) plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(7)

4.2 添加网格显示

plt.grid(True,linestyle,alpha) #linestyle是指线条风格 #alpha是指透明度

  • 代码示例:

import matplotlib.pyplot as plt x=[1,2,3,4,5] y=[1,4,9,16,25] plt.figure(figsize=(5,5),dpi=100) plt.plot(x,y) plt.grid(True,linestyle="--",alpha=0.8) #添加网格显示 plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(8)

4.3添加描述信息

plt.xlabel(str) plt.ylabel(str) plt.title(str)

  • 代码示例:

import matplotlib.pyplot as plt x=[1,2,3,4,5] y=[1,4,9,16,25] plt.figure(figsize=(5,5),dpi=100) plt.plot(x,y) plt.xlabel("x") plt.ylabel("x的平方") plt.title("x平方的函数图像") plt.grid(True,linestyle="--",alpha=0.8) plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(9)

5 设置图像层5.1 再添加一条折线

再次使用plt.plot()就可以再添加一条曲线。其中,可以在plot()中设置对应曲线的标签:

plt.plot(x,y_2x,label='2x')

并加入以下图像层的代码将其展示出来:

plt.legend()

  • 代码示例:

import matplotlib.pyplot as plt x=[0,1,2,3,4,5] y_2x=[2*i for i in range(6)] y_3x=[3*i for i in range(6)] #创建画布 plt.figure(figsize=(5,5),dpi=100) #绘制图像 plt.plot(x,y_2x,label='2x') plt.plot(x,y_3x,label='3x') #再添加一条折线 plt.legend() plt.show() #显示图像

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(10)

6 多个坐标系显示折线图

figure, axes = plt.subplots(nrows=1, ncols=2) #nrows:行 #ncols:列

注意:此时为面向对象的编程,注意代码的不同。

  • 代码示例:

import matplotlib.pyplot as plt x=[0,1,2,3,4,5] y_2x=[2*i for i in range(6)] y_3x=[3*i for i in range(6)] #创建画布 #plt.figure(figsize=(5,5),dpi=100) figure, axes = plt.subplots(nrows=1, ncols=2,figsize=(10,5),dpi=100) #绘制图像 #plt.plot(x,y_2x,label='2x') axes[0].plot(x,y_2x,label='2x') #plt.plot(x,y_3x,label='3x') axes[1].plot(x,y_3x,label='3x') #显示图例 #plt.legend() axes[0].legend() axes[1].legend() #修改刻度 axes[0].set_xticks(x[::1]) axes[0].set_yticks(range(0,20)[::2]) axes[1].set_xticks(x[::1]) axes[1].set_yticks(range(0,20)[::2]) #添加描述信息 axes[0].set_xlabel("x") axes[0].set_ylabel("2x") axes[0].set_title("y=2x") axes[1].set_xlabel("x") axes[1].set_ylabel("3x") axes[1].set_title("y=3x") #显示图像 plt.show()

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(11)

三、散点图

分析不同变量之间的关系/规律

plt.scatter(x,y)

3.1散点图的绘制

import matplotlib.pyplot as plt #数据 math_score=[140,96,134,108,88] physics_score=[95,78,86,81,72] #创建画布 plt.figure() #绘制散点图 plt.scatter(math_score,physics_score) #显示图像 plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(12)

四、柱状图

统计不同类别的数量大小,比较数据之间的差异

plt.bar(x,width,...) #x为数据 #width为柱宽

4.1一个类别单个柱状图
  • 代码示例:

import matplotlib.pyplot as plt #数据 students=["小明","小红","小刚","小智","小华"] math_score=[140,96,134,108,88] #创建画布 plt.figure() #绘制图像 plt.bar(range(0,5),math_score,color=['r','y','g','c','b']) #采用不同颜色绘制柱状图 #修改刻度 plt.xticks(range(0,5),students) #添加标题 plt.title("数学成绩") #添加网格显示 plt.grid(linestyle=":",alpha=0.5) #显示图像 plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(13)

4.2一个类别多个柱状图
  • 代码示例:

import matplotlib.pyplot as plt #数据 students=["小明","小红","小刚","小智","小华"] math_score=[i/150 for i in [140,96,134,108,88]] physics_score=[i/100 for i in [95,78,86,81,72]] #创建画布 plt.figure() #绘制图像 plt.bar(range(0,5),math_score,color='r',width=0.2) plt.bar([i-0.2 for i in range(0,5)],physics_score,color='b',width=0.2)#注意刻度要作出调整,不然会重叠在一起 #修改刻度 plt.xticks([i-0.1 for i in range(0,5)],students) #添加标题 plt.title("数学和物理成绩得分情况") #添加网格显示 plt.grid(linestyle=":",alpha=0.5) #显示图像 plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(14)

五、直方图

表示数据分布状况

plt.hist(x,bins,density,...) #x为数据 #bins为组数 #density为是否显示频率(默认不显示)

5.1 直方图与柱状图的区别

直方图

柱状图

展示数据的分布

比较数据的大小

x轴展示的是数字区间

x轴展示的是分类数据

柱子间无间隔

柱子间有间隔

柱子宽度有意义

5.2 直方图的绘制

import matplotlib.pyplot as plt #数据 math_score=[140,96,134,108,138,128,128,117,126,116,100,114,115,116,112,116,101,102,89,96,85,108,92,75,116,92,124,150] #创建画布 plt.figure(figsize=(20,10),dpi=100) #绘制图像 d=3 group_num = (max(math_score)-min(math_score))//d #组数=(最大值-最小值)//组距 plt.hist(math_score,bins=group_num,density=True) #修改刻度 plt.xticks(range(min(math_score),max(math_score) d,d)) #添加标题 plt.title("数学成绩直方图") #添加网格显示 plt.grid(linestyle=":",alpha=0.5) #显示图像 plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(15)

六、饼图

不同数据占比情况(类别太多不建议使用)

plt.pie(x,labels,autopct,colors,...) #x:数量 #labels:每部分的名称 #autopct:占比显示 #colors:每部分颜色

6.1 饼图的绘制

import matplotlib.pyplot as plt #数据 students=["小明","小红","小刚","小智","小华"] duty_days=[3,5,8,6,8] #创建画布 plt.figure() #绘制图像 plt.pie(duty_days,labels=students,autopct="%1.2f%%",colors=['r','y','c','b','g']) plt.axis('equal')#保证饼图长宽一致 #显示图例 plt.legend() #修改刻度 plt.xticks() #添加标题 plt.title("上月同学值日天数") #添加网格显示 plt.grid(linestyle=":",alpha=0.5) #显示图像 plt.show()

结果:

pythonmatplotlib库的用处(PythonMatplotlib库用法笔记)(16)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页