matplotlib是Python里十分强大的数学绘图库,因为看着挺好玩的所以姑且入门学了一下。
入门示例:
import matplotlib.pyplot as plt
figure = [0,1,2,3,4,5,6]
plt.plot(figure)
plt.show()
结果:
<分析>
我们导入matplotlib模块的pyplot类并设置别名为plt,pyplot类提供了一个绘图框架,我们绘制的图形将在这上面呈现。
之后我们定义了一个列表并把它传入plot()函数中,plot()函数会根据列表中的数据尝试绘制出有意义的图形。然后我们调用plt的show()方法,该方法会打开matplotlib查看器,并显示绘制的图形。
可以看到显示出一条正比例直线,plot()函数究竟是如何工作的呢?
再看一个例子:
import matplotlib.pyplot as plt
figure = [1,1,1,1,1,1]
plt.plot(figure)
plt.show()
结果:
结合两个例子猜也猜到了。我就不绕弯子了,接下来给出plot()函数的语法格式:
plt.plot(x,y,linestyle="-",linewidth=2,color,label="plot figure")
- x :x轴。
- y :y轴。
- linestyle :折线样式,默认为直线。style样式有:(-)直线,(–)虚线,(-.)短距线,(:)虚线。
- linewidth :折线宽度,默认为2。
- color :设置颜色。
- label :设置标签文本。
上面两个例子只传入了一组数据,在只传入一组数据的情况下,plot()会把这组数据视作y轴数据,并自动使用[0,1,2,3…]作为x轴数据。
注意:最开始也提到了,plot()函数只会根据所给的数据尝试绘制图形,因此有时候它可能无法得到我们想要的图形,比如我们想用这种方法得到一个抛物线的时候。
import matplotlib.pyplot as plt
figure = [0,1,4,9,16,25]
plt.plot(figure)
plt.show()
结果:
可以看到这并不是一条光滑的曲线,因为数据太少。因此如果想要绘制出更多的图形,可以尝试定制函数。
plot()函数使用示例:
#1
import matplotlib.pyplot as plt
x_data = [100,200,300,400,500,600]
y_data = [2014,2015,2016,2017,2018,2019]
plt.plot(x_data,y_data,ls="--",lw=4,color="red")#linestyle、linewidth可使用简写
plt.show()
结果:
#2
import matplotlib.pyplot as plt
x_data = [100,200,300,400,500,600]
y1_data = [2014,2015,2016,2017,2018,2019]
y2_data = [1800,1850,1900,1950,2000,2050]
plt.plot(x_data,y1_data,x_data,y2_data,linestyle="--",color="black")
plt.show()
结果:
#3
import matplotlib.pyplot as plt
x_data = [100,200,300,400,500,600]
y1_data = [2014,2015,2016,2017,2018,2019]
y2_data = [1888,1890,1892,1894,1896,1898]
plt.plot(x_data,y1_data,linewidth=3,linestyle="--",color="red")
plt.plot(x_data,y2_data,linewidth=3,linestyle="-.",color="blue")
plt.show()
结果:
#4
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-6,6,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
结果:
#5 其它方法配置属性
除了直接在plot()中指定参数配置图形属性外,也可以在plot()函数外利用其它方法配置属性,具体的方法有:
1) 通过 set_%%() 方法;
2) 通过 set()方法;
3) 通过 setp()方法。
示例:
import matplotlib.pyplot as plt
y = [0,1,4,9,16]
line = plt.plot(y)[0]
line.set_color('r')
line.set_linestyle('-.')
plt.show()
---------------------------------
import matplotlib.pyplot as plt
y = [0,1,4,9,16]
line = plt.plot(y)[0]
line.set(color='r',ls='-.')
plt.show()
----------------------------------
import matplotlib.pyplot as plt
y = [0,1,4,9,16]
line = plt.plot(y)[0]
plt.setp(line,color='r',ls='-.')
plt.show()
----------------------------------
以上三种方法得到的图形是一样的。
结果:
添加更多细节:
我们可以使用plt的title()方法添加图标标题,使用xlabel()、ylabel()方法为每条轴设置标题、大小等参数,还可以使用tick_params()方法指定刻度标记的大小。
示例:
import matplotlib.pyplot as plt
figure = [0,1,4,9,16]
plt.plot(figure)
plt.title("Figure 1",fontsize = 18,color = "red")
plt.xlabel("x value",fontsize = 14)
plt.ylabel("y value",fontsize = 14)
plt.tick_params(axis="both",labelsize=14)
plt.show()
结果: