下面的代码通过两个坐标(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()
#画单条线
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()
输出如下:
也可以绘制任意数量的点,只需确保两个轴上的点数相同即可。如绘制一条不规则线,坐标为(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()
输出如下:
下面绘制一个正弦和余弦图,在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()
可用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()
标记 | 符号 | 描述 |
---|---|---|
“.” | 点 | |
“,” | 像素点 | |
“o” | 实心圆 | |
“v” | 下三角 | |
“^” | 上三角 |
上表有很多行数据,其余内容看这里。
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’ | 白色 |
可通过以下参数自定义标记的大小与颜色:
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()
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()
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()
可以自定义线的样式,包括线的类型、颜色和宽度等。
线的类型可以使用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()
线的颜色可以使用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()
线的宽度可以使用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()
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()
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()
示例代码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()
使用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()
用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()
暂不整理,具体内容点这里。
注意:
示例代码如下:
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()
用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()
以下实例添加一个简单的网格线,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()
以下实例添加一个简单的网格线,并设置网格线的样式,格式如下:
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()
用pyplot中的subplot()和subplots()方法来绘制多个子图,其中:subpot()方法在绘图时需要指定位置,subplots()方法可以一次生成多个,在调用时只需要调用生成对象的ax即可。
语法:
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()
设置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), 即第二行第二列的子图。
subplots()语法格式如下:
matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
暂不整理,具体内容点这里。
用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()
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()
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()
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()
用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()
输出如下:
垂直方向的柱形图可以使用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()
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()
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()
设置柱形图宽度,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()
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()
用pyplot中的pie()方法来绘制散点图。
暂不整理,具体内容点这里。
END