この記事は
matplotlibで作成したグラフの目盛りに以下のように画像を挿入する方法をメモ.
やり方の一つがこのページで議論されていたのでやってみました.
実行環境
- mac OS Mojave
- Python 3.5.5
- matplotlib 2.2.2
目盛りに画像を挿入するには
どうやらBboxImageでバウンディングボックスを作って,そこに画像を当てはめるらしい.
import numpy as np
import os
from matplotlib.image import BboxImage, imread
from matplotlib.transforms import Bbox
# ここの4変数をいじって位置と画像サイズを調節
TICKYPOS = -0.07
Xlower = -0.4
Xupper = Xlower + 0.7
h = 0.07
np.random.seed(seed=999)
data = np.random.random_sample(5)
fig = plt.figure(figsize=(16, 9))
ax = fig.add_subplot(111)
ax.bar(np.arange(len(data)), data)
# x軸ラベルを削除
ax.get_xaxis().set_ticklabels([])
for i in range(5):
lowerCorner = ax.transData.transform((Xlower + i,TICKYPOS - h))
upperCorner = ax.transData.transform((Xupper + i,TICKYPOS + h))
bbox_image = BboxImage(Bbox([[lowerCorner[0], lowerCorner[1]], [upperCorner[0], upperCorner[1]]]),
norm = None,
origin=None,
clip_on=False)
bbox_image.set_data(imread(os.path.join("./img", "{0:03d}".format(i) + ".png")))
ax.add_artist(bbox_image)
plt.savefig("./img/example.png")
plt.show()
この方法はデータ数が変化したり,データの数値のスケールが変わるとズレてしまう.
そのときは変数 TICKYPOS, Xlower, Xupper, hをいじって調節しなければならない...
もっとやりやすい方法があったら教えていただきたいです.