LoginSignup
3
3

More than 5 years have passed since last update.

matplotlibでx軸目盛りに画像を挿入する方法

Last updated at Posted at 2019-01-22

この記事は

matplotlibで作成したグラフの目盛りに以下のように画像を挿入する方法をメモ.
やり方の一つがこのページで議論されていたのでやってみました.

image.png

実行環境

  • 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()

image.png
この方法はデータ数が変化したり,データの数値のスケールが変わるとズレてしまう.
そのときは変数 TICKYPOS, Xlower, Xupper, hをいじって調節しなければならない...
もっとやりやすい方法があったら教えていただきたいです.

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3