Python--matplotlib知识点(持续更新)

目录

  • 前言
  • 准备
    • 格式调整
  • 一.pyplot基础函数
    • 1.matplotlib.pyplot.show()
    • 2.matplotlib.pyplot.plot(*args,**kwargs)
  • 二.Figure,Axes与Axis
    • 图解
    • 1.matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None,edgecolor=None, linewidth=None, frameon=True)
    • 2.向figure中添加axes
      • 2.1 函数matplotlib.pyplot.subplot(*args, **kwargs) / matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)
      • 2.2 函数matplotlib.pyplot.subplots(nrows, ncols, sharex, sharey, squeeze, subplot_kw, **fig_kw)
      • 2.3 方法matplotlib.pyplot.figure().add_subplot()
      • 2.4 方法matplotlib.pyplot.figure().add_axes(rect, projection, polar, sharex, sharey, **kwargs)
  • 三.绘画类型
    • (一)基础
      • 1.折线图matplotlib.pyplot.plot() \ AxesSubplot.plot()
      • 2.散点图matplotlib.pyplot.scatter() \ AxesSubplot.scatter()
      • 3.柱状图matplotlib.pyplot.bar() \ AxesSubplot.bar()
      • 4.茎状图matplotlib.pyplot.stem() \ AxesSubplot.stem()
      • 5.阶梯图matplotlib.pyplot.step() \ AxesSubplot.step()
      • 6.填充图matplotlib.pyplot.fill_between() \ AxesSubplot.fill_between()
      • 7.堆叠图matplotlib.pyplot.stackplot() \ AxesSubplot.stackplot()
    • (二)数组和字段的绘图
      • 1.显示图像matplotlib.pyplot.imshow() \ AxesSubplot.imshow()
      • 2.matplotlib.pyplot.pcolormesh() \ AxesSubplot.pcolormesh()
      • 3.轮廓线(等高线)matplotlib.pyplot.contour() \ AxesSubplot.contour()
      • 4.填充轮廓matplotlib.pyplot.contourf() \ AxesSubplot.contourf()
      • 5.倒钩图matplotlib.pyplot.barbs() \ AxesSubplot.barbs()
      • 6.箭图matplotlib.pyplot.quiver() \ AxesSubplot.quiver()
      • 7.流线图matplotlib.pyplot.streamplot() \ AxesSubplot.streamplot()
    • (三)统计分析绘图
      • 1.直方图matplotlib.pyplot.hist() \ AxesSubplot.hist()
      • 2.箱线图(箱型图)matplotlib.pyplot.boxplot() \ AxesSubplot.boxplot()
      • 3.误差棒图matplotlib.pyplot.errorbar() \ AxesSubplot.errorbar()
      • 4.小提琴图matplotlib.pyplot.violinplot() \ AxesSubplot.violinplot()
      • 5.尖峰栅格图matplotlib.pyplot.eventplot() \ AxesSubplot.eventplot()
      • 6.2D直方图matplotlib.pyplot.hist2d() \ AxesSubplot.hist2d()
      • 7.matplotlib.pyplot.hexbin() \ AxesSubplot.hexbin()
      • 8.饼状图matplotlib.pyplot.pie() \ AxesSubplot.pie()
    • (四)非结构化坐标
      • 1.matplotlib.pyplot.tricontour() \ AxesSubplot.tricontour()
      • 2.matplotlib.pyplot.tricontourf() \ AxesSubplot.tricontourf()
      • 3.matplotlib.pyplot.tripcolor() \ AxesSubplot.tripcolor()
      • 4.matplotlib.pyplot.triplot() \ AxesSubplot.triplot()
    • (五)3D
      • 3D scatterplot,3D surface,Triangular 3D surfaces,3D voxel / volumetric plot,3D wireframe plot


前言

    Matplotlib是Python中的一个库,它是数字的-NumPy库的数学扩展。Matplotlib中的所有内容都按层次结构组织,层次结构的顶部是由matplotlib提供的matplotlb“状态机环境”——pyplot模块。层次结构的下一层是面向对象界面的第一层,其中pyplot仅用于图形创建等少数功能,用户显式创建并跟踪图形和轴对象。在此级别,使用pyplot创建图形,通过这些图形可以创建一个或多个轴对象,使用基础函数将绘图元素(线条、图像、文本等)添加到当前图形中的当前轴


 

准备

格式调整

# 导入matplotlib库中的pyplot
import matplotlib.pyplot as plt

# 解决中文乱码,可自行修改期望字体
plt.rcParams['font.sans-serif']='SimHei'

# 解决负号无法显示的问题
plt.rcParams['axes.unicode_minus']=False

# 将图表以矢量图格式显示,提高清晰度
%config InlineBackend.figure_format = 'svg'

 

一.pyplot基础函数

1.matplotlib.pyplot.show()

显示所有图片,多次使用显示多个图

jupyter notebook中,不使用show()函数也可以正常运行,会显示图片的格式和图片;使用show()函数会只显示图片

可以认为大部分matplotlib函数都是在“暂存”的图片上进行处理,show()函数会把“暂存”的图片显示出去,然后就没有“暂存”图片了,故大部分操作应在show函数之前完成

 

2.matplotlib.pyplot.plot(*args,**kwargs)

用于画图,可以绘制点和折线线
 
参数:
(1)*args:允许传入多对x和y和一个可选的"格式控制字符串"
(2)x(可选):X轴数据,(元组),[列表],numpy.array,pandas.Series,缺省为range(len(y))
(3)y:Y轴数据,(元组),[列表],numpy.array,pandas.Series

x,y可以为pd.DataFrame?

(4)**kwargs:允许传入多个可选的关键字参数

import matplotlib.pyplot as plt

#一个图片里绘制一个图像
a1=[3,4,5] # [列表]
a2=[2,3,2] # x,y元素个数N应相同

plt.plot(a1,a2)
plt.show()

Python--matplotlib知识点(持续更新)_第1张图片

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#一个图片里绘制两个图像
x=(3,4,5) # (元组)
y1=np.array([3,4,3]) # np.array
y2=pd.Series([4,5,4]) # pd.Series

plt.plot(x,y1)
plt.plot(y2)  # x可省略,默认[0,1..,N-1]递增,N是y内的元素数
plt.show() # plt.show()前可加多个plt.plot(),画在同一张图上

Python--matplotlib知识点(持续更新)_第2张图片

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#一个图片里绘制两个图像
plt.plot(x,y1,x,y2) # 此时x不可省略
plt.show()

Python--matplotlib知识点(持续更新)_第3张图片

import numpy as np
import matplotlib.pyplot as plt

#二维数组
b1=np.array([[0,1,2], 
             [3,4,5],
             [6,7,8]])
b2=np.array([[2,3,5],
             [8,3,1],
             [4,5,9]])
#b1的第一列为[0,3,6],b2的第一列为[2,8,4],从而构成三个点一段折线,以此类推

plt.plot(b1,b2)
plt.show()

Python--matplotlib知识点(持续更新)_第4张图片

import numpy as np
import matplotlib.pyplot as plt

#格式控制字符串
b1=np.array([[0,1,2],
             [3,4,5],
             [6,7,8]])
b2=np.array([[1,3,4],
             [7,1,8],
             [9,7,6]])

plt.plot(b1,b2,"ob:") #"b"为蓝色, "o"为圆点, ":"为点线
plt.show()

Python--matplotlib知识点(持续更新)_第5张图片

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
#颜色与线型
color=['b','g','r','c','m','y','k','w']
#cyan:青;red:红;green:绿;blue:蓝;
#white:白;black-k:黑;yellow:黄;magenta:洋红
linestyle=['-','--','-.',':']
#“:”:点线;“-.”:点画线;“--”:短划线;“-”:实线;""," ":无线条

##格式控制字符串
dic1=[[0,1,2],[3,4,5]]
x=pd.DataFrame(dic1)
dic2=[[2,3,2],[3,4,3],[4,5,4],[5,6,5]]
y=pd.DataFrame(dic2)

# 循环输出所有"颜色"与"线型"
for i in range(2):
    for j in range(4):
        plt.plot(x.loc[i],y.loc[j],color[i*4+j]+linestyle[j]) 
plt.show()

#如果只控制"颜色", 格式控制字符串还可以输入英文全称, 如"red"
#也可以是十六进制RGB字符串, 如"#FF0000"

Python--matplotlib知识点(持续更新)_第6张图片

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#点型
marker=['.',',','o','v','^','<','>','1','2','3','4',
        's','p','*','h','H','+','x','D','d','|','_','.',',']

dic1=[[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13,14],[15,16,17]]
x=pd.DataFrame(dic1)
dic2=[[2,3,2.5],[3,4,3.5],[4,5,4.5],[5,6,5.5]]
y=pd.DataFrame(dic2)

# 循环输出所有"点型"
for i in range(6):
    for j in range(4):
        plt.plot(x.loc[i],y.loc[j],"b"+marker[i*4+j]+":") # "b"蓝色,":"点线
plt.show()

Python--matplotlib知识点(持续更新)_第7张图片

import matplotlib.pyplot as plt

#关键字=参数
y=[2,3,2] 
plt.plot(y,color="blue",linewidth=20,marker="o",markersize=50,
         markerfacecolor="red",markeredgewidth=6,markeredgecolor="grey")
#颜色:蓝色;线宽:20;点:圆点;点尺寸:50;
#点填充色:红色;点边缘宽度:6;点边缘色:灰色

plt.show()

Python--matplotlib知识点(持续更新)_第8张图片


 

二.Figure,Axes与Axis

图解


Python--matplotlib知识点(持续更新)_第9张图片

  1. 一个Figure(图形)对象可以有任何数量的Axes(轴域,一套坐标轴)对象,但为了有用,至少应该有一个
  2. 一个Axes对象包含两个Axis(轴)对象(如果是三维就是三个)

Figure的组件
Python--matplotlib知识点(持续更新)_第10张图片

 
 

1.matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None,edgecolor=None, linewidth=None, frameon=True)

创建一个图像,实例化Figure对象,是所有绘图元素的顶层容器,相当于给图提供了一个画布
 
参数:
(1)num:图像编号或名称,数字为编号 ,字符串为名称,缺省为从1开始的数字
(2)figsize:元组,指定figure的宽和高,单位为英寸,缺省为(6.4,4.8)
(3)dpi:指定绘图对象的分辨率,即每英寸多少个像素,缺省值为72(似乎会随版本不同变化)

1英寸等于2.5cm,A4纸是 21x30cm的纸张

(4)facecolor:背景颜色,缺省为’w’
(5)edgecolor:边框颜色,缺省为’w’
(6)linewidth:边缘的线宽
(7)frameon:是否显示边框

figure函数的图像有“颜色”参数,后面如savefig函数也有“颜色参数”,但存储图片时只按照savefig函数的颜色参数,缺省为默认黑白

#创建一个长为10,宽为6的画布
import matplotlib.pyplot as plt
fig=plt.figure(num='pic2-1.png',figsize = (10,6),dpi=90,facecolor = 'r',edgecolor = 'y')
#没有子图的空图形

 

2.向figure中添加axes

2.1 函数matplotlib.pyplot.subplot(*args, **kwargs) / matplotlib.pyplot.subplot(nrows, ncols, index, **kwargs)

先隐式的创建一个画布,然后再在画布上添加一个子图(如果需要多个子图,应反复调用,也可用for循环),该子图是通过均分画布得到的

子图:一个Axes对象,矩形区域,这个矩形是基于figure坐标系统定义的。

返回值:一个Axes对象,按照子图索引,按以行主顺序递增。

使用subplot() 方法创建子图将删除任何与其重叠的预先存在的子图,而不是共享边界。

 
参数:
(1)*args(位置参数):三个整数或一个三位数(自动解析成三个整数),用于分别对应 nrows,ncols,index
(2)nrows:在画布纵轴上分隔成几个子图,缺省为1
(3)ncols:在画布横轴上分隔成几个子图,缺省为1
(4)index:子图索引,从左往右,从上到下排列的第几个图像,缺省为1

(5)**kwargs:一些涉及子图属性的关键字参数。此方法还接受返回AXIS基类的关键字参数

举例:
plt.subplot(nrows=2, ncols=3, index=5)
=plt.subplot(2, 3, 5)
=plt.subplot(235)

import numpy as np
import matplotlib.pyplot as plt

# 设置数据
x = np.arange(0, 3, 0.1)
y1 = np.sin(np.pi*x)
y2 = np.cos(np.pi*x)

#创建图像
plt.figure(num='pic2-1.png',figsize = (10,6), dpi=90,facecolor = 'lightgrey', edgecolor = 'azure',linewidth=10)
# 绘制第一个子图
ax1=plt.subplot(211)  
plt.plot(x, y1)  
# 绘制第二个子图
ax2=plt.subplot(212)  
plt.plot(x, y2)

#绘制
plt.show()

Python--matplotlib知识点(持续更新)_第11张图片
 

2.2 函数matplotlib.pyplot.subplots(nrows, ncols, sharex, sharey, squeeze, subplot_kw, **fig_kw)

创建一张画布和一组子图
 
返回值:一个figure和axes对象的元组
 
参数:
(1)nrows:在画布纵轴上分隔成几个子图,缺省为1
(2)ncols:在画布横轴上分隔成几个子图,缺省为1
(3)sharex / sharey:是否共x或y轴,缺省为False

  • all / True:所有子图共享轴
  • none / False:各自享有自己的轴
  • row / col:按子图行或列共享x,y轴

(4)squeeze:在返回多个子图时,axes是否要压缩为1维数组,缺省为True
(5)subplot_kw:创建subplot的关键字字典

(6)**fig_kw:创建figure时的其他关键字

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
    
# 创建图形,并创建一个子图
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()

Python--matplotlib知识点(持续更新)_第12张图片

 

2.3 方法matplotlib.pyplot.figure().add_subplot()

2.4 方法matplotlib.pyplot.figure().add_axes(rect, projection, polar, sharex, sharey, **kwargs)

参数:
(1)rect(位置参数):一个4元素的浮点数列表,[left, bottom, width, height]
其定义了要添加到figure中的矩形子区域的:左下角坐标(x, y)、宽度、高度

每个元素的值是实际长度与figure对应长度的分数比值,不大于1;即将figure的宽、高作为1个单位

(2)projection(可选)(关键词参数):坐标系的投影类型,缺省为None,表示笛卡尔直角坐标投影

  • 可能的值有:
    {None, ‘aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’, str}
  1. str 是自定义投影的名称。
  2. 不仅可以使用系统已设计好的投影,还可以自定义一个投影变换并使用,注册并调用自定义的投影名称即可。str即自定义投影的名称。

(3)polar(可选)(关键词参数):布尔值,表示是否启用’polar‘的投影类型,缺省为False

  • polar=True <–> projection=‘polar’

(4)sharex, sharey(可选)(关键词参数):是否共x或y轴,同上

三.绘画类型

(一)基础

1.折线图matplotlib.pyplot.plot() \ AxesSubplot.plot()

2.散点图matplotlib.pyplot.scatter() \ AxesSubplot.scatter()

3.柱状图matplotlib.pyplot.bar() \ AxesSubplot.bar()

4.茎状图matplotlib.pyplot.stem() \ AxesSubplot.stem()

5.阶梯图matplotlib.pyplot.step() \ AxesSubplot.step()

6.填充图matplotlib.pyplot.fill_between() \ AxesSubplot.fill_between()

7.堆叠图matplotlib.pyplot.stackplot() \ AxesSubplot.stackplot()

(二)数组和字段的绘图

1.显示图像matplotlib.pyplot.imshow() \ AxesSubplot.imshow()

2.matplotlib.pyplot.pcolormesh() \ AxesSubplot.pcolormesh()

3.轮廓线(等高线)matplotlib.pyplot.contour() \ AxesSubplot.contour()

4.填充轮廓matplotlib.pyplot.contourf() \ AxesSubplot.contourf()

5.倒钩图matplotlib.pyplot.barbs() \ AxesSubplot.barbs()

6.箭图matplotlib.pyplot.quiver() \ AxesSubplot.quiver()

7.流线图matplotlib.pyplot.streamplot() \ AxesSubplot.streamplot()

(三)统计分析绘图

1.直方图matplotlib.pyplot.hist() \ AxesSubplot.hist()

2.箱线图(箱型图)matplotlib.pyplot.boxplot() \ AxesSubplot.boxplot()

3.误差棒图matplotlib.pyplot.errorbar() \ AxesSubplot.errorbar()

4.小提琴图matplotlib.pyplot.violinplot() \ AxesSubplot.violinplot()

5.尖峰栅格图matplotlib.pyplot.eventplot() \ AxesSubplot.eventplot()

6.2D直方图matplotlib.pyplot.hist2d() \ AxesSubplot.hist2d()

7.matplotlib.pyplot.hexbin() \ AxesSubplot.hexbin()

8.饼状图matplotlib.pyplot.pie() \ AxesSubplot.pie()

(四)非结构化坐标

1.matplotlib.pyplot.tricontour() \ AxesSubplot.tricontour()

2.matplotlib.pyplot.tricontourf() \ AxesSubplot.tricontourf()

3.matplotlib.pyplot.tripcolor() \ AxesSubplot.tripcolor()

4.matplotlib.pyplot.triplot() \ AxesSubplot.triplot()

(五)3D

3D scatterplot,3D surface,Triangular 3D surfaces,3D voxel / volumetric plot,3D wireframe plot


以上未完待更新,仅供个人学习,侵权联系删除,如有错误或不足之处可指出,以便改进。

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