【详细教程】-Python绘图模块Matplotlib

文章目录

  • 1 简介
  • 2 绘图标记
    • 2.1 fmt参数
    • 2.2 标记大小与颜色
  • 3 绘图线
    • 3.1 线的类型
    • 3.2 线的颜色
    • 3.3 线的宽度
    • 3.4 多条线
  • 4 轴标签和标题
    • 4.1 标题
    • 4.2 图形中文显示
    • 4.3 标题与标签的定位
  • 5 网格线
  • 6 绘制多个图
    • 6.1 subplot
    • 6.2 subplots
  • 7 散点图
  • 8 柱形图
  • 9 饼图


1 简介

下面的代码通过两个坐标(0,0),(6,100)来绘制一条线:

from matplotlib import pyplot as plt
import numpy as np

x=np.array([0,6])
y=np.array([0,100])

plt.plot(x,y)
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第1张图片
plot()是绘制二维图像的基本函数,语法为:

#画单条线
plot([x],y,[fmt],*,data=None,**kwargs)

#画多条线
plot([x],y,[fmt],[x2],y2,[fmt2],...,**kwargs)

参数说明:

1、x,y:点或线的节点,x为x轴数据,y为y轴数据,数据可以是列表或数组。

2、fmt:可选,定义基本格式(如颜色、标记和线条样式)。

3、**kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。

>>> plot(x,y,'bo') #创建y中数据与x中对应值的二维线图,使用蓝色实心圈绘制
>>> plot(x,y,'r+') #使用红色+号

可选属性如下:

1、颜色字符:'b’蓝色,'m’洋红色,'g’绿色,'y’黄色,'r’红色,'k’黑色,'w’白色,‘c’青绿色,’#008000’RGB颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

2、线型参数:’‐‘实线,’‐‐‘破折线,’‐.‘点划线,’:'虚线。

3、标记字符:’.‘点标记,’,'像素标记(极小点),'o’实心圈标记,‘v’倒三角标记,’^‘上三角标记,’>‘右三角标记,’<'左三角标记…等等。

若仅仅想绘制两个坐标点,而不是一条线,可以使用o参数,表示一个实心圈的标记:

from matplotlib import pyplot as plt
import numpy as np

x=np.array([1,8])
y=np.array([3,10])

plt.plot(x,y,'o')
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第2张图片
也可以绘制任意数量的点,只需确保两个轴上的点数相同即可。如绘制一条不规则线,坐标为(1,3)、(2,8)、(6,1)、(8,10),对应的两个数组为:[1,2,6,8]与[3,8,1,10]。代码如下:

from matplotlib import pyplot as plt
import numpy as np

x=np.array([1,2,6,8])
y=np.array([3,8,1,10])

plt.plot(x,y)
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第3张图片
下面绘制一个正弦和余弦图,在plt.plot()参数中包含两对x,y值,第一对是x,y,这对应于正弦函数,第二对是x,z,这对应于余弦函数:

from matplotlib import pyplot as plt
import numpy as np

x=np.arange(0,4*np.pi,0.1)#起始值,终止值,步长
y=np.sin(x)
z=np.cos(x)

plt.plot(x,y,x,z)
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第4张图片


2 绘图标记

可用plot()的marker参数给坐标自定义特殊的标记。以下代码定义了实心圆标记:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,marker='o')
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第5张图片
marker可以定义的符号如下:

标记 符号 描述
“.” 在这里插入图片描述
“,” m01 像素点
“o” m02 实心圆
“v” m03 下三角
“^” m04 上三角

上表有很多行数据,其余内容看这里。

2.1 fmt参数

fmt参数定义了基本格式,如标记、线条样式和颜色。格式如下:

fmt='[marker][line][color]'

示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,'o:r') #o表示实心圆标记,:表示虚线,r表示颜色为红色
plt.show()

marker类型见上面那个表格。

线类型如下:

线类型标记 描述
‘-’ 实线
‘:’ 虚线
‘–’ 破折线
‘-.’ 点划线

颜色类型如下:

颜色标记 描述
‘r’ 红色
‘g’ 绿色
‘b’ 蓝色
‘c’ 青色
‘m’ 品红
‘y’ 黄色
‘k’ 黑色
‘w’ 白色

2.2 标记大小与颜色

可通过以下参数自定义标记的大小与颜色:

1、markersize,简写为ms:定义标记的大小。

2、markerfacecolor,简写为mfc:定义标记内部的颜色。

3、markeredgecolor,简写为mec:定义标记边框的颜色。

下面是3个示例代码:

1、设置标记大小的示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,marker='o',ms=20)
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第6张图片
2、设置标记外边框颜色的示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,marker='o',ms=20,mec='r')
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第7张图片
3、设置标记内部颜色的示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,marker='o',ms=20,mfc='r')
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第8张图片


3 绘图线

可以自定义线的样式,包括线的类型、颜色和宽度等。

3.1 线的类型

线的类型可以使用linestyle参数来定义,简写为ls。

类型 简写 说明
‘solid’ (默认) ‘-’ 实线
‘dotted’ ‘:’ 点虚线
‘dashed’ ‘–’ 破折线
‘dashdot’ ‘-.’ 点划线
‘None’ ‘’ 或 ’ ’ 不画线

示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,ls='-.')
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第9张图片

3.2 线的颜色

线的颜色可以使用color参数来定义,简写为c。

颜色标记 描述
‘r’ 红色
‘g’ 绿色
‘b’ 蓝色
‘c’ 青色
‘m’ 品红
‘y’ 黄色
‘k’ 黑色
‘w’ 白色

示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,c='g')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第10张图片

3.3 线的宽度

线的宽度可以使用linewidth参数来定义,简写为lw,值可以是浮点数,如:1、2.0、5.67等。示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,lw='8.5')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第11张图片

3.4 多条线

plot()方法中可以包含多对x,y值来绘制多条线。示例代码1如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,c='b')
plt.plot(x,2*y,c='r')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第12张图片
示例代码2如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y,'b',x,2*y,'r')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第13张图片
与示例代码片段1的输出完全相同。

示例代码3如下:

import numpy as np
from matplotlib import pyplot as plt

X=np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S=np.cos(X),np.sin(X) #正弦、余弦函数

plt.xlim(-4,4)# 设置横轴的上下限
plt.xticks(np.linspace(-4,4,9))# 设置横轴记号
plt.ylim(-1,1)# 设置纵轴的上下限
plt.yticks(np.linspace(-1,1,5))# 设置纵轴记号

plt.plot(X,C,label='cosine') #添加标签cosine
plt.plot(X,S,label='sine') #添加标签sine

legend(loc='upper left') #添加图例

plt.show()

【详细教程】-Python绘图模块Matplotlib_第14张图片


4 轴标签和标题

使用xlabel()和ylabel()方法来设置x轴和y轴的标签。示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y)
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第15张图片

4.1 标题

用title()方法来设置标题。示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y)
plt.title('attack on titan')
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第16张图片

4.2 图形中文显示

暂不整理,具体内容点这里。

4.3 标题与标签的定位

注意:

  • title()方法提供了loc参数来设置标题显示的位置,可以设置为:‘left’,‘right’,和’center’,默认值为’center’。
  • xlabel()方法提供了loc参数来设置x轴显示的位置,可以设置为:‘left’,‘right’,和’center’,默认值为’center’。
  • ylabel()方法提供了loc参数来设置y轴显示的位置,可以设置为:‘bottom’,‘top’,和’center’,默认值为’center’。

示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y)
plt.title('attack on titan',loc='left')
plt.xlabel('x-label',loc='right')
plt.ylabel('y-label',loc='top')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第17张图片


5 网格线

用pyplot中的grid()方法来设置图表中的网格线,语法格式如下:

matplotlib.pyplot.grid(b=None,which='major',axis='both',**kwargs)

参数说明:

1、b:可选,默认为None,可以设置布尔值,true为显示网格线,false为不显示,如果设置**kwargs参数,则值为true。

2、which:可选,可选值有’major’、‘minor’和’both’,默认为’major’,表示应用更改的网格线。

3、axis:可选,设置显示哪个方向的网格线,可以是取’both’(默认),‘x’或’y’,分别表示两个方向,x轴方向或y轴方向。

4、**kwargs:可选,设置网格样式,如:color=‘r’,linestyle=’-'和linewidth=2,分别表示网格线的颜色,样式和宽度。

以下实例添加一个简单的网格线,参数使用默认值:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y)
plt.title('attack on titan')
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.grid()
plt.show()

【详细教程】-Python绘图模块Matplotlib_第18张图片
以下实例添加一个简单的网格线,axis参数使用x,设置x轴方向显示网格线:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y)
plt.title('attack on titan')
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.grid(axis='x')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第19张图片
以下实例添加一个简单的网格线,并设置网格线的样式,格式如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.plot(x,y)
plt.title('attack on titan')
plt.xlabel('x-label')
plt.ylabel('y-label')
plt.grid(c='r',ls='--',lw=0.5)
plt.show()

【详细教程】-Python绘图模块Matplotlib_第20张图片


6 绘制多个图

用pyplot中的subplot()和subplots()方法来绘制多个子图,其中:subpot()方法在绘图时需要指定位置,subplots()方法可以一次生成多个,在调用时只需要调用生成对象的ax即可。

6.1 subplot

语法:

subplot(nrows, ncols, plotNum, **kwargs)

以上参数将整个绘图区域分成nrows行和ncols列,然后从左到右,从上到下的顺序对每个子区域进行编号1…N,左上的子区域的编号为1、右下的区域编号为N,编号可以通过参数plotNum来设置。如设置numRows=1,numCols=2,就是将图表绘制成1×2的图片区域,对应的坐标为:

(1, 1), (1, 2)

plotNum=1, 表示的坐标为(1, 1), 即第一行第一列的子图。

plotNum=2, 表示的坐标为(1, 2), 即第一行第二列的子图。

示例代码如下:

import numpy as np
from matplotlib import pyplot as plt

x=np.arange(1,11)
y=2*x+5

plt.subplot(1,2,1)
plt.plot(x,y)
plt.title('plot1')

plt.subplot(1,2,2)
plt.plot(x,y*y)
plt.title('plot2')

plt.show()

【详细教程】-Python绘图模块Matplotlib_第21张图片
设置numRows=2,numCols=2,就是将图表绘制成2×2的图片区域,对应的坐标为:

(1, 1), (1, 2)
(2, 1), (2, 2)

plotNum=1, 表示的坐标为(1, 1), 即第一行第一列的子图。

plotNum=2, 表示的坐标为(1, 2), 即第一行第二列的子图。

plotNum=3, 表示的坐标为(2, 1), 即第二行第一列的子图。

plotNum=4, 表示的坐标为(2, 2), 即第二行第二列的子图。

6.2 subplots

subplots()语法格式如下:

matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

暂不整理,具体内容点这里。


7 散点图

用pyplot中的scatter()方法来绘制散点图。scatter()方法语法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:

1、x,y:长度相同的数组,也就是即将绘制散点图的数据点,输入数据。

2、s:点的大小,默认20,也可以是个数组,数组每个参数为对应点的大小。

3、c:点的颜色,默认蓝色’b’,也可以是个RGB或RGBA二维行数组。

4、marker:点的样式,默认小圆圈’o’。

5、cmap:Colormap,默认None,标量或者是一个colormap的名字,只有c是一个浮点数数组的时才使用。如果没有申明就是image、cmap。

6、norm:Normalize,默认None,数据亮度在0-1之间,只有c是一个浮点数的数组的时才使用。

7、vmin,vmax:亮度设置,在norm参数存在时会忽略。

8、alpha:透明度设置,0-1之间,默认None,即不透明。

9、linewidths:标记点的长度。

10、edgecolors:颜色或颜色序列,默认为’face’,可选值有’face’,‘none’,None。

11、plotnonfinite:布尔值,设置是否使用非限定的c(inf,-inf或nan)绘制点。

12、**kwargs:其他参数。

以下实例 scatter() 函数接收长度相同的数组参数,一个用于 x 轴的值,另一个用于 y 轴上的值:

import matplotlib.pyplot as plt
import numpy as np

x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])

plt.scatter(x,y)
plt.show()

【详细教程】-Python绘图模块Matplotlib_第22张图片
设置图标大小:

import matplotlib.pyplot as plt
import numpy as np

x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])
sizes=np.array([20,50,100,200,400])

plt.scatter(x,y,s=sizes)
plt.show()

【详细教程】-Python绘图模块Matplotlib_第23张图片
自定义点的颜色:

import matplotlib.pyplot as plt
import numpy as np

x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])
colors=np.array(["red","green","black","orange","purple"])

plt.scatter(x,y,s=100,c=colors)
plt.show()

【详细教程】-Python绘图模块Matplotlib_第24张图片
设置两组散点图:

import matplotlib.pyplot as plt
import numpy as np

x=np.array([1,2,3,4,5])
y=np.array([1,4,9,16,25])
plt.scatter(x,y,c='y')

x=np.array([2,3,8,1,5])
y=np.array([1,7,4,36,15])
plt.scatter(x,y,c='b')

plt.show()

【详细教程】-Python绘图模块Matplotlib_第25张图片
颜色条Colormap暂不整理,具体内容点这里。


8 柱形图

用pyplot中的bar()方法来绘制柱形图,语法如下:

matplotlib.pyplot.bar(x,height,width=0.8,bottom=None,*,align='center',data=None,**kwargs)

参数说明如下:

1、x:浮点型数组,柱形图的x轴数据。

2、height:浮点型数组,柱形图的高度。

3、width:浮点型数组,柱形图的宽度。

4、bottom:浮点型数组,底座的y坐标,默认0。

5、align:柱形图与x坐标的对齐方式,'center’以x位置为中心,这是默认值。‘edge’:将柱形图的左边缘与x位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及align=‘edge’。

6、**kwargs:其他参数。

以下实例创建一个柱形图:

import matplotlib.pyplot as plt
import numpy as np

x=np.array(['naruto','sasuke','sakura'])
y=np.array([18,20,16])

plt.bar(x,y)
plt.show()

输出如下:
【详细教程】-Python绘图模块Matplotlib_第26张图片
垂直方向的柱形图可以使用barh()方法来设置,示例代码如下:

import matplotlib.pyplot as plt
import numpy as np

x=np.array(['naruto','sasuke','sakura'])
y=np.array([18,20,16])

plt.barh(x,y)
plt.show()

【详细教程】-Python绘图模块Matplotlib_第27张图片
设置柱形图颜色:

import matplotlib.pyplot as plt
import numpy as np

x=np.array(['naruto','sasuke','sakura'])
y=np.array([18,20,16])

plt.bar(x,y,color='r')
plt.show()

【详细教程】-Python绘图模块Matplotlib_第28张图片
自定义各个柱形的颜色:

import matplotlib.pyplot as plt
import numpy as np

x=np.array(['naruto','sasuke','sakura'])
y=np.array([18,20,16])

plt.bar(x,y,color=['b','y','g'])
plt.show()

【详细教程】-Python绘图模块Matplotlib_第29张图片
设置柱形图宽度,bar()方法使用width设置,barh()方法使用height设置,示例代码片段1:

import matplotlib.pyplot as plt
import numpy as np

x=np.array(['naruto','sasuke','sakura'])
y=np.array([18,20,16])

plt.bar(x,y,width=0.1)
plt.show()

【详细教程】-Python绘图模块Matplotlib_第30张图片
示例代码片段2:

import matplotlib.pyplot as plt
import numpy as np

x=np.array(['naruto','sasuke','sakura'])
y=np.array([18,20,16])

plt.barh(x,y,height=0.1)
plt.show()

【详细教程】-Python绘图模块Matplotlib_第31张图片


9 饼图

用pyplot中的pie()方法来绘制散点图。

暂不整理,具体内容点这里。


END

你可能感兴趣的:(Python,Python,matplotlib,numpy,subplot,plot)