plot绘制多条线
在绘制直线或曲线的时候,常用的方法就是通过足够数量的点进行连接来模拟曲线
一次plot绘制一条线
样例如下
import matplotlib.pyplot as plt
import numpy as np
figure1 = plt.figure(figsize = (6,4))
x=np.linspace(0,20,100)
y=2*x
plt.subplot(121)
line1 = plt.plot(x,y)
plt.subplot(122)
y1 = np.sin(x)
line2 = plt.plot(x,y1)
plt.subplots_adjust(wspace=0.4)
figure1.savefig('plot1.png')
print(line1,type(line1))
plt.show()
# [<matplotlib.lines.Line2D object at 0x13fa44650>] <class 'list'>
可以看到使用plt绘图后,会返回一个Line2D对象组成的列表
上述代码中一次plot的调用只绘制了一条线,分别为一次函数和正弦函数
一次plot绘制多条线
绘制多条线,也就是多个2D图像,只需要在plot参数上配置上每条线的坐标值就好,现在我们把上面的两个函数曲线通过一个plot绘制在一起
import matplotlib.pyplot as plt
import numpy as np
figure1 = plt.figure(figsize = (6,4))
x=np.linspace(0,20,100)
y=2*x
y1 = np.sin(x)
plt.subplot(121)
line1,line2= plt.plot(x,y,x,np.sin(x))
figure1.savefig('plot1.png')
print(line1,line2,sep='\n')
plt.show()
# Line2D(_child0)
# Line2D(_child1)
可以看到一次绘制多个plot对象后,我们对返回的Line2D列表进行解包就可以得到两个Line2D对象
线型及线宽选择
在绘制线性图的时候,也就是使用plt.plot()进行图像绘制的时候,默认线型为实线,可以在plot绘图时进行绘制,线型和线宽都可以手动设置
线型的选择可以使用linestyle参数进行设置,也可以使用缩写版的ls
线宽的设置可以使用linewidth进行设置,也可以使用缩写版的lw
线型的选择
1. '-' 或 'solid':实线
2. '--' 或 'dashed':虚线
3. '-.' 或 'dashdot':点划线
4. ':' 或 'dotted':点线
5. 'None' 或 '''':无线条
下面展示四种线及不同线宽的样式
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 10)
y = np.sin(x)
fig = plt.figure()
# 绘制不同线型
plt.plot(x, y, linestyle='-', lw = 1,label='Solid Line') # 实线
plt.plot(x, y + 0.5, linestyle='--', lw = 3,label='Dashed Line') # 虚线
plt.plot(x, y + 1, linestyle='-.', lw = 5,label='Dash-dot Line') # 点划线
plt.plot(x, y + 1.5, linestyle=':', lw = 7,label='Dotted Line') # 点线
plt.legend()
fig.savefig('plo1.png')
plt.show()
线型及线宽的获取
我们可以通过解包plot绘制的Line2D列表获取每个Line2D对象,然后通过.get_linestyle()和.get_linewidth()获取线型和线宽
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 10)
y = np.sin(x)
fig = plt.figure()
# 绘制不同线型
line1,=plt.plot(x, y, linestyle='-', lw = 1,label='Solid Line') # 实线
line2,=plt.plot(x, y + 0.5, linestyle='--', lw = 3,label='Dashed Line') # 虚线
line3,=plt.plot(x, y + 1, linestyle='-.', lw = 5,label='Dash-dot Line') # 点划线
line4,=plt.plot(x, y + 1.5, linestyle=':', lw = 7,label='Dotted Line') # 点线
plt.legend()
print(line1.get_linestyle(),line1.get_linewidth())
print(line2.get_linestyle(),line2.get_linewidth())
print(line3.get_linestyle(),line3.get_linewidth())
print(line4.get_linestyle(),line4.get_linewidth())
# - 1.0
# -- 3.0
# -. 5.0
# : 7.0
点型(标记设置)
点,也叫标记,配置每个点在图表中的绘制,可以设置标记的颜色(默认与线的颜色相同),样式默认为(None,也就是默认不绘制标记),边缘颜色(默认与线的颜色相同),边缘线宽,标记大小
标记样式在plot中的参数名为marker,样式的选择如下
1. '.':表示点标记,通常是一个非常小的点。
2. 'o':表示圆圈标记,即一个空心的圆圈。
3. 'v':表示下三角标记,即一个朝下的三角形。
4. '^':表示上三角标记,即一个朝上的三角形。
5. '<':表示左三角标记,即一个朝左的三角形。
6. '>':表示右三角标记,即一个朝右的三角形。
7. 's':表示正方形标记,即一个小方块。
8. 'p':表示五边形标记,类似于一个五角形。
9. '*':表示星形标记,即一个星星形状的标记。
10. 'h':表示六边形标记1,一个带有六个顶点的形状。
11. 'H':表示六边形标记2,另一个略微不同的六边形形状。
12. '+':表示加号标记,即一个加号符号。
13. 'x':表示叉号标记,即一个叉形符号。
14. 'D':表示大菱形标记,一个大的钻石形状。
15. 'd':表示小菱形标记,一个小的钻石形状。
16. '|':表示垂直线标记,即一条垂直线。
17. '_':表示水平线标记,即一条水平线。
18.‘’或None或'None', 即不绘制标记
边缘颜色的参数为markeredgecolor
边缘线宽的参数为markeredgewidth
标记颜色的参数为markerfacecolor
标记大小的参数为markersize
绘制样例如下
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 10)
y = np.sin(x)
fig = plt.figure()
plt.plot(x, y,ls = '-',color = 'r', marker='o',markerfacecolor='b',markeredgecolor='y',markeredgewidth=4,markersize = 15)
fig.savefig('plo1.png')
plt.show()
参数配置的缩写形式
参数配置的缩写形式由三个字符组成,分别为线的颜色的缩写字母形式,标记的样式,和线型,顺序不可变
如‘ro-’ 这里指线色为红,标记为圆圈,线型为实线
注意,如使用一个plot绘制多条线,缩写参数会根据就近原则配置最近的线,如有多条线需要进行配置,则需要多次配置参数
样例如下
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 10)
y = np.sin(x)
fig = plt.figure()
plt.plot(x, y,x,2*x,'ro-')
fig.savefig('plo1.png')
plt.show()
可以注意到由于缩写参数的就近原则,第一条曲线并未获取到参数,所以需要再次配置
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 10)
y = np.sin(x)
fig = plt.figure()
plt.plot(x, y,'b+--',x,2*x,'ro-')
fig.savefig('plo1.png')
plt.show()