matplotlib学习日记-共享绘图区域的坐标轴
Posted ai-bingjie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib学习日记-共享绘图区域的坐标轴相关的知识,希望对你有一定的参考价值。
(1)共享单一绘图区域的坐标轴
‘‘‘
上一讲介绍了画布的划分,有时候想将多张图放在同一个绘图区域,
不想在每个绘图区域只绘制一幅图形,这时候借助共享坐标轴的方法实现在一个绘图区
绘制多幅图形的目的。
‘‘‘
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams["font.sans-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", ls="-")
ax1.set_xlabel("x坐标轴")
ax1.set_ylabel("以e为底指数函数", color="r")
ax1.tick_params("y", color="b")
#将y轴标签,主刻度线和刻度标签设置
ax2 = ax1.twinx()
#实例ax2的主轴与实例ax1的x轴是共享的,实例ax2的刻度线和刻度标签在右侧轴脊处绘制
s2 = np.cos(t**2)
ax2.plot(t, s2, c="r", ls=":")
ax2.set_ylabel("余弦函数", color="r")
ax2.tick_params("y", colors="r")
plt.show()
(2)共享不同子区绘图区域的坐标轴
‘‘‘
共享不同子区绘图区域的坐标轴的方法是subplots(2, 2, sharey=True),
sharey=True是一区,二区共享y轴,还有其他参数,row,col,all,none,
其中all和none分别等同True和False。
‘‘‘
import matplotlib.pyplot as plt
import numpy as np
x1 = np.linspace(0, 2*np.pi, 400)
y1 = np.cos(x1)
x2 = np.linspace(0.01, 10, 100)
y2 = np.cos(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)
#分成4个子区
ax1 = ax[0, 0]
ax1.plot(x1, y1)
#ax[0, 0]访问第一个子区
ax2 = ax[0, 1]
ax2.plot(x2, y2)
ax3 = ax[1, 0]
ax3.scatter(x3, y3)
ax4 = ax[1, 1]
ax4.plot(x4, y4)
plt.show()
(3)将(2)中的plt.subplots(2, 2)改成plt.subplots(2, 2, sharex="all")-所有子区共享x轴
(4)参数sharex=“none”
与(2)相同
(5)参数sharex=“row”------->每一行x轴取值范围实现共享
(6)sharex="col"------------->每列共享x
(7)将共享坐标轴的子区之间的空隙去掉,似乎出了点问题,还是有空隙
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.0, 10.0, 200)
y = np.cos(x)*np.sin(x)
y2 = np.exp(-x)*np.sin(x)
y3 = 3*np.sin(x)
y4 = np.power(x, 0.5)
fig, (ax1, ax2, ax3, ax4) = plt.subplots(4, 1, sharex="all")
fig.subplots_adjust(hspace=0)
ax1.plot(x, y, ls="-", lw=2)
ax1.set_yticks(np.arange(-0.6, 0.7, 0.2))
ax1.set_ylim(-0.7, 0.7)
(8)共享个别子区绘图区域的坐标轴
import matplotlib.pyplot as plt
import numpy as np
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.plot(x3, y3)
ax4 = plt.subplot(224, sharex=ax1)
#与子区1共享x轴
ax4.plot(x4, y4)
plt.show()
以上是关于matplotlib学习日记-共享绘图区域的坐标轴的主要内容,如果未能解决你的问题,请参考以下文章