[1] 一张图看懂matplotlib的绘图结构
[2] Python数据可视化之美:专业图表绘制指南
matplotlib的图形对象结构如图1所示。以下对图形对象进行简要说明。
代码如下:
"""
1. 程序目的
(1) 创建matplotlib的Figure对象
(2) 创建matplotlib的Axes对象
2. 版本
2.1 山东青岛 2021年4月29日 Version 1
"""
# 1. matplotlib包的导入
import matplotlib.pyplot as plt
# 2. 基于plt.figure创建Figure对象
fig = plt.figure(figsize=(5,5),dpi=300) # 图片大小5inch*5inch,分辨率:300dpi
# 3. 在创建的图形对象基础上增加Axes子图对象
ax_1 = fig.add_subplot(221) # 2行2列第一个位置
ax_2 = fig.add_subplot(222) # 2行2列第二个位置
ax_3 = fig.add_subplot(212) # 2行1列第二个位置
上述程序在一个Figure图形对象上,创建了3个Axes子图对象,结果如下:
代码如下:
"""
1. 程序目的
(1) 创建matplotlib的Figure对象
(2) 创建matplotlib的Axes对象
2. 版本
2.1 山东青岛 2021年4月29日 Version 1
"""
# 1. matplotlib包的导入
import matplotlib.pyplot as plt
# 2. 基于plt.figure创建Figure对象
fig = plt.figure(figsize=(2,2),dpi=300) # 图片大小5inch*5inch,分辨率:300dpi
# 3. 在创建的图形对象基础上运用fig.add_axes()增加Axes子图对象
ax_1 = fig.add_axes([0.1,0.2,1.8,1.8]) # 在Figure中的x=0.1,y=0.2的位置创建1个长为1.8,宽为1.8的axes对象。
ax_2 = fig.add_axes([1.35,1.4,0.5,0.5])
上述程序在一个Figure图形对象上,创建了2个Axes子图对象,结果如下图所示。可以发现fig.add_axes()方法可以在一个子图对象之上创建新的子图,这是由于其可以指定子图对象创建的位置,用这种方法创建子图对象时需要注意不同子图对象创建语句的顺序。
代码如下:
# 1. 包的导入
import numpy as np
import matplotlib.pyplot as plt
# 2. 函数预定义
def f(t):
return np.exp(-t)*np.cos(2*np.pi*t)
t1 = np.arange(0.0,5.0,0.1)
t2 = np.arange(0.0,5.0,0.02)
# 3. 基于plt.figure创建Figure对象
fig = plt.figure(dpi=300) # 图片大小5inch*5inch,分辨率:300dpi
# 4. 在创建的图形对象基础上运用plt.subplot()创建Axes子图对象
ax_1 = plt.subplot(211) # plt.subplot()创建Axes
ax_1.plot(t1,f(t1),'bo',t2,f(t2),'k')
ax_2 = plt.subplot(212)
ax_2.plot(t2,np.cos(2*np.pi*t2),'r--')
代码如下:
# 1. 包的导入
import numpy as np
import matplotlib.pyplot as plt
# 2. 创建数据
data = np.random.randn(2,100)
# 3. plt.subplots同时创建Figure和Axes,注意Figure只有一个,Axes会依据参数确定创建的数目
fig,axs = plt.subplots(2,2,figsize=(5,5))
axs[0,0].hist(data[0])
axs[1,0].scatter(data[0],data[1])
axs[0,1].plot(data[0],data[1])
axs[1,1].hist2d(data[0],data[1])
plt.show()