Вы, вероятно, хотите сдвинуть целые оси со своим содержимым.Для этого потребуется построить каждую гистограмму по своим осям, разделить оси и установить положение соответствующих осей (ax.set_position
).Затем вы можете отключить галочки, шипы и ярлыки, где это необходимо.
import random
import numpy
import matplotlib.pyplot as plt
from matplotlib.transforms import Bbox
data1 = [random.gauss(3,2) for _ in range(400)]
data2 = [random.gauss(4,2) for _ in range(400)]
data3 = [random.gauss(5,2) for _ in range(400)]
bins = numpy.linspace(-10, 10, 100)
fig, ax1 = plt.subplots()
ax2 = fig.add_subplot(111, sharex=ax1, sharey=ax1, label="ax2")
ax3 = fig.add_subplot(111, sharex=ax1, sharey=ax1, label="ax3")
ax1.set(xlim=(0, 10), ylim=(0, 25))
ax1.hist(data3, bins, label='data3', color="C2")
ax2.hist(data2, bins, label='data2', color="C1")
ax3.hist(data1, bins, label='data1', color="C0")
fig.legend(loc='upper right')
xshift=0.04; yshift=0.04
for i, ax in enumerate((ax3,ax2,ax1)):
ax.patch.set_visible(False)
pos = ax.get_position()
newpos = Bbox.from_bounds(pos.x0+i*xshift, pos.y0+i*yshift, pos.width, pos.height)
ax.set_position(newpos)
for sp in ["top", "right"]:
ax.spines[sp].set_visible(False)
if ax != ax3:
ax.spines["left"].set_visible(False)
ax.tick_params(labelleft=False, left=False, labelbottom=False)
fig.savefig("trial01.pdf", transparent=True)
plt.show()