import matplotlib.pyplot as plt
Matplotlib库的简单一个小例子:
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,1,4,3,5]) #[x轴数据,y轴数据]
plt.ylabel('Grade') #设置y轴的坐标名
plt.axis([-1,10,0,6]) #设置xy轴的轴长区别[x的起始点,x终止点,y起始点,y终止点]
plt.savefig('e.jpg',dpi=600) #保存图片,dpi像素(展示图片的清晰度)
plt.show()
plt.subplot(nrows,ncols,plot_number) #行,列,当前要的绘图区域
plt.subplot(3,2,4) #即在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域。下面图形就是当前创建的绘图区域
import numpy as np
import matplotlib.pyplot as plt
def example_plot(ax, fontsize=12):
a = np.arange(0,10,1)
ax.plot(a,np.exp(-a) *np.cos(2*np.pi*a))
ax.set_xlabel('x-label', fontsize=fontsize) #x轴坐标名
ax.set_ylabel('y-label', fontsize=fontsize) #y轴坐标名
ax.set_title('Title', fontsize=fontsize) #标题
plt.close('all')
fig, ((ax1,ax2),(ax3,ax4)) = plt.subplots(nrows=2, ncols=2)#设置绘图区域为2*2网格,将这个对象fig,(ax1,ax2),(ax3,ax4)分别占取一个位置
example_plot(ax1, fontsize=24)#作图
example_plot(ax2, fontsize=24)
example_plot(ax3, fontsize=24)
example_plot(ax4, fontsize=24)
fig.show()
比如下面这个:
这样的绘图区域,我们可以使用plt.subplot2grid()
plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)
#参数的含义分别是:
GridSpec:设定网格大小
CurSpec:选中网格位置
colspan=1:列数
rowspan=1:行数
例子:
import numpy as np
import matplotlib.pyplot as plt
def f():
a = np.arange(0.0, 5.0,0.02)
return plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.subplot2grid((3,3),(0,0),colspan=3)
ax1 = f()
plt.subplot2grid((3,3),(1,0),colspan=2)
ax2 = f()
plt.subplot2grid((3,3),(1,2),rowspan=2)
ax3 = f()
plt.subplot2grid((3,3),(2,0),)
ax4 = f()
plt.subplot2grid((3,3),(2,1),)
ax5 = f()
plt.show()
这样还是比较复杂,我们可以使用GridSpec类
这样我们可以吧区域向列表一样的进行操作。
例子:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
def f():
a = np.arange(0.0, 5.0, 0.02)
return plt.plot(a, np.sin(2*np.pi*a), 'r--')
fig = gridspec.GridSpec(3,3)
ax1 = plt.subplot(fig[0,:]) #[行,列,跨度]
ax1 = f()
ax2 = plt.subplot(fig[1,:-1])#[1,:-1]
ax2 = f()
ax3 = plt.subplot(fig[1:,-1])
ax3 = f()
ax4 = plt.subplot(fig[2,0])
ax4 = f()
ax5 = plt.subplot(fig[2,1])
ax5 = f()
plt.show()
plt.plot(x,y,format_string,**kwargs)
x:x轴数据,列表或数组,可选
y:y轴数据,列表或数组,可选
format_string:控制曲线的格式字符串,可选
**kwargs:第二组或者更多的(x,y,format_string)
format_string的参数有很多:比较常用的就是下面这几个:
color: 控制颜色
linestyle:线条风格
marker:标记风格
markerfacecolor:标记颜色
markrsize:标记尺寸
'''
```python
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(10)
plt.plot(a, a*1.5,'go-', a, a*2.5, 'rx', a, a*3.5, '^' , a, a*4.5, 'b-.')
plt.show()
format_string:控制曲线的格式字符串,可选参数,由颜色字符,风格字符,标记字符组成。
颜色字符可以使用字符来表示,也可以通过RGB的值来控制,还可以通过灰度值来控制。下面是一个简单的几个颜色字符的说明,其他的颜色,我们都可以通过一定值来得到
风格字符串是指图上的线展示出一个什么样的风格,简单的风格字符串的说明:
标记字符是指,在某一点的可以着重标记,下面是一些简单的标记。
pyplot并不默认支持中文显示,需要rcParams参数进行修改字体
rcParams的属性值有下面三个:
中文字体的种类有下面几个:
例子:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family'] = 'SimHei' #字体
matplotlib.rcParams['font.size'] = 20 #字号
matplotlib.rcParams['font.style'] = 'normal' #字体风格
a = np.arange(0.0, 5.0, 0.02)
plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()
但是这样的方式并不是最好的方式,因为这样会设置整体都为中文,统一的字体,字号及风格,有的时候我们并不想这样,这个时候,我们就可以在有中文输出的地方设置一个属性fontproperties
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0.0, 5.0, 0.02)
plt.xlabel('横轴:时间',fontproperties='SimHei', fontsize=20)
plt.ylabel('纵轴:振幅',fontproperties='SimHei', fontsize=20)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()
import matplotlib.pyplot as plt
a = np.arange(0.0, 5.0,0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.xlabel('横轴:时间',fontproperties='SimHei', fontsize=15,color='green')
plt.ylabel('纵轴:振幅',fontproperties='SimHei', fontsize=15)
plt.title(r'正弦波实例$y=cos(2\pi x)$', fontproperties='SimHei',fontsize=20)
plt.annotate(r'$\nu=2$',xy=(2,1), xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))
#plt.annotate(该位置显示的文字内容,箭头的位置, 文字的位置,对于箭头的格式设置(颜色,阴影,宽度))
plt.axis([-1,6,-2,2])
plt.grid(True)
plt.show()