您的当前位置:首页正文

『Python』matplotlib共享绘图区域坐标轴

来源:画鸵萌宠网
『Python』matplotlib共享绘图区域坐标轴1. 共享单⼀绘图区域的坐标轴

有时候,我们想将多张图形放在同⼀个绘图区域,不想在每个绘图区域只绘制⼀幅图形。这时候,就可以借助共享坐标轴的⽅法实现在⼀个绘图区域绘制多幅图形的⽬的。import numpy as np

import matplotlib.pyplot as pltimport matplotlib as mplmpl.use('Qt5Agg')

mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['font.serif'] = ['SimHei']

mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显⽰为⽅块的问题,或者转换负号为字符串fig, ax1 = plt.subplots()t = np.arange(0.05, 10., 0.01)s1 = np.exp(t)

ax1.plot(t, s1, c=\"b\ax1.set_xlabel(\"x坐标轴\")

ax1.set_ylabel(\"以e为底的指数\ax1.tick_params(\"y\ax2 = ax1.twinx()s2 = np.cos(t ** 2)ax2.plot(t, s2, c=\"r\

ax2.set_ylabel(\"余弦函数\ax2.tick_params(\"y\plt.show()

同样可以⽤twiny()⽅法共享y轴2. 共享不同⼦区绘图区域的坐标轴subplots()函数有两个命名关键字参数sharex和sharey,有四种取值'row''col''all',等同于True'none',等同于Falseimport numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplmpl.use('Qt5Agg')mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['font.serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显⽰为⽅块的问题,或者转换负号为字符串x1 = np.linspace(0, 2 * np.pi, 400)y1 = np.cos(x1 ** 2)x2 = np.linspace(0.01, 10, 100)y2 = np.sin(x2)x3 = np.random.rand(100)y3 = np.linspace(0, 3, 100)x4 = np.arange(0, 6, 0.5)y4 = np.power(x4, 3)fig, ax = plt.subplots(2, 2)ax1 = ax[0, 0]ax1.plot(x1, y1)ax2 = ax[0, 1]ax2.plot(x2, y2)ax3 = ax[1, 0]ax3.scatter(x3, y3)ax4 = ax[1, 1]ax4.scatter(x4, y4)plt.show()基本图形如图所⽰:sharex='all'sharex='none'sharex='row'sharex='col'sharey类似将共享坐标轴的⼦区之间的空隙去掉import numpy as np

import matplotlib.pyplot as pltimport matplotlib as mplmpl.use('Qt5Agg')

mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['font.serif'] = ['SimHei']

mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显⽰为⽅块的问题,或者转换负号为字符串x1 = np.linspace(0, 2 * np.pi, 400)y1 = np.cos(x1 ** 2)

x2 = np.linspace(0.01, 10, 100)y2 = np.sin(x2)

x3 = np.random.rand(100)y3 = np.linspace(0, 3, 100)x4 = np.arange(0, 6, 0.5)y4 = np.power(x4, 3)

fig, ax = plt.subplots(2, 2, sharex='all', sharey='all')fig.subplots_adjust(hspace=0, wspace=0)ax1 = ax[0, 0]ax1.plot(x1, y1)ax2 = ax[0, 1]ax2.plot(x2, y2)ax3 = ax[1, 0]ax3.scatter(x3, y3)ax4 = ax[1, 1]ax4.scatter(x4, y4)plt.show()

3. 共享个别⼦区绘图区域的坐标轴

import numpy as np

import matplotlib.pyplot as pltimport matplotlib as mplmpl.use('Qt5Agg')

mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['font.serif'] = ['SimHei']

mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显⽰为⽅块的问题,或者转换负号为字符串x1 = np.linspace(0, 2 * np.pi, 400)y1 = np.cos(x1 ** 2)

x2 = np.linspace(0.01, 10, 100)y2 = np.sin(x2)

x3 = np.random.rand(100)y3 = np.linspace(0, 3, 100)x4 = np.arange(0, 6, 0.5)y4 = np.power(x4, 3)fig, ax = plt.subplots(2, 2)ax1 = plt.subplot(221)ax1.plot(x1, y1)ax2 = plt.subplot(222)ax2.plot(x2, y2)ax3 = plt.subplot(223)ax3.scatter(x3, y3)

ax4 = plt.subplot(224, sharex=ax1)ax4.scatter(x4, y4)plt.show()

4. 优化坐标轴范围显⽰

plt.autoscale(enable=True, axis=\"both\

因篇幅问题不能全部显示,请点此查看更多更全内容

Top