matplotlib画图之多图组合布局
import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(20, 10))
ax1 = plt.subplot2grid((3,3), (0,0), colspan=3)
ax1.text(0.2,0.2,"ax1")
ax2 = plt.subplot2grid((3,3), (1,0), colspan=2)
ax2.text(0.2,0.2,"ax2")
ax3 = plt.subplot2grid((3,3), (1, 2), rowspan=2)
ax3.text(0.2,0.2,"ax3")
ax4 = plt.subplot2grid((3,3), (2, 0))
ax4.text(0.2,0.2,"ax4")
ax5 = plt.subplot2grid((3,3), (2, 1))
ax5.text(0.2,0.2,"ax5")
plt.suptitle("subplot2grid")
<matplotlib.text.Text at 0x7f748a5aa1d0>
#subplot2grid绘图
T = np.linspace(-np.pi, np.pi, 1024)
fig = plt.figure(figsize=(20, 10))
grid_size = (6, 2)
#左上
plt.subplot2grid(grid_size, (0, 0), rowspan = 3, colspan = 1)
plt.plot(np.sin(2 * T), np.cos(0.5 * T), c = 'k')
#右上
plt.subplot2grid(grid_size, (0, 1), rowspan = 3, colspan = 1)
plt.plot(np.cos(3 * T), np.sin(T), c = 'k')
#下部
plt.subplot2grid(grid_size, (3, 0), rowspan=3, colspan=3)
plt.plot(np.cos(5 * T), np.sin(7 * T), c= 'k')
plt.tight_layout()
plt.show()
#subplot2grid
def get_radius(T, params):
m, n_1, n_2, n_3 = params
U = (m * T) / 4
return (np.fabs(np.cos(U)) ** n_2 + np.fabs(np.sin(U)) ** n_3) **(-1. / n_1)
fig = plt.figure(figsize=(20, 10))
grid_size = (3, 4)
T = np.linspace(0, 2 * np.pi, 1024)
for i in range(grid_size[0]):
for j in range(grid_size[1]):
params = np.random.random_integers(1, 20, size = 4)
R = get_radius(T, params)
axes = plt.subplot2grid(grid_size, (i, j), rowspan=1, colspan=1)
axes.get_xaxis().set_visible(False)
axes.get_yaxis().set_visible(False)
plt.plot(R * np.cos(T), R * np.sin(T), c = 'k')
plt.title('%d, %d, %d, %d' % tuple(params), fontsize = 'small')
plt.tight_layout()
plt.show()
#subplots, figsize设定
T = np.linspace(-np.pi, np.pi, 1024)
fig, (ax0, ax1) = plt.subplots(ncols =2,figsize=(15,15))
ax0.plot(np.sin(2 * T), np.cos(0.5 * T), c = 'k')
ax1.plot(np.cos(3 * T), np.sin(T), c = 'k')
plt.show()
#使用相同的刻度set_aspect
T = np.linspace(0, 2 * np.pi, 1024)
plt.figure(figsize=(20, 10))
plt.plot(2. * np.cos(T), np.sin(T), c = 'k', lw = 3.)
plt.axes().set_aspect('equal')
plt.show()
fig = plt.figure(figsize=(20, 10))
X = np.linspace(-6, 6, 1024)
plt.ylim(-.5, 1.5)
plt.plot(X, np.sinc(X), c = 'k')
plt.show()
X = np.linspace(-6, 6, 1024)
Y1, Y2 = np.sinc(X), np.cos(X)
plt.figure(figsize=(10.24, 2.56))
plt.plot(X, Y1, c='k', lw = 3.)
plt.plot(X, Y2, c='.75', lw = 3.)
plt.show()
# 详细图
X = np.linspace(-6, 6, 1024)
Y = np.sinc(X)
X_detail = np.linspace(-3, 3, 1024)
Y_detail = np.sinc(X_detail)
plt.plot(X, Y, c = 'k')
#通过axes
sub_axes = plt.axes([.6, .6, .25, .25])
sub_axes.plot(X_detail, Y_detail, c = 'k')
#ss=plt.setp(sub_axes)
plt.show()
#plt直接绘图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
x = np.arange(-2*np.pi, 2*np.pi, 0.01)
y1 = np.sin(x)
y2 = np.cos(x)
plt.figure(figsize=(20, 10))
# label位置
plt.plot(x, y1, label='$sinx$')
plt.plot(x, y2, label='$cosx$')
plt.legend(loc='upper right')
#X轴范围
plt.xlim(-2*np.pi-1, 2*np.pi+3)
#刻度
plt.xticks([-2*np.pi, -np.pi, 0, np.pi, 2*np.pi], ['$-2\pi$', '$-\pi$', '$0$', '$\pi$', '$2\pi$'])
plt.title('三角-函数')
plt.xlabel('横坐标')
plt.ylabel('纵坐标')
#画X0、Y0轴
#plt.axhline(y=0, c='black')
# draw a thick red hline at y=0 that spans the xrange
plt.axhline(linewidth=4, color='r')
plt.axvline(linewidth=4, color='r')
plt.show()
#AXES绘图, figsize
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
x = np.arange(-2*np.pi, 2*np.pi, 0.01)
y1 = np.sin(x)
y2 = np.cos(x)
#通过subplots返回figure和axes
fig, ax = plt.subplots(figsize=(20, 7))
ax.plot(x, y1, label='$sinx$')
ax.plot(x, y2, label='$cosx$')
ax.legend(loc='upper right')
ax.set_xlim(-2 * np.pi - 1, 2 * np.pi + 3)
ax.set_xticks([-2 * np.pi, -np.pi, 0, np.pi, 2 * np.pi])
ax.set_xticklabels(['$-2\pi$', '$-\pi$', '$0$', '$\pi$', '$2\pi$'])
ax.set_title('三角-函数')
ax.set_xlabel('横坐标')
ax.set_ylabel('纵坐标')
ax.axhline(y=0, c='black')
plt.show()
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...