Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibでバーコードを作成する方法【初心者向けコード例付き】

Pythonの可視化ライブラリ「Matplotlib」を使えば、特別な専用ライブラリを導入しなくても、0と1の2値データからシンプルなバーコード風の画像を簡単に生成できます。この記事では、その具体的な手順とサンプルコードをわかりやすく解説します。

Matplotlibでバーコードを作成する手順

以下の手順に従うことで、Matplotlibだけでバーコードのような縞模様の画像を作成できます。

  • 図のサイズと余白の設定: plt.rcParams を使って、図のサイズやサブプロット間・周囲のパディングを調整します。
  • 2値データ(0と1)のリストを作成: バーコードの黒白パターンとなる、0と1で構成される配列を用意します。
  • 図(Figure)の作成: plt.figure(dpi=100) のようにして、新しい図を作成します。既存の図がある場合はそれをアクティブにします。
  • 軸(Axes)の追加: fig.add_axes() メソッドで図にAxesを追加します。
  • 軸を非表示にする: バーコードには目盛りや枠線が不要なので、set_axis_off() で軸をオフにします。
  • imshow()メソッドで描画: 手順2で作成したデータを imshow() メソッドで画像としてプロットします。
  • 図を表示: 最後に show() メソッドを呼び出して、図を画面に表示します。

サンプルコード

実際のコード例は以下の通りです。

import matplotlib.pyplot as plt
import numpy as np

# 図のサイズと自動レイアウトを設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 0と1で構成されるバーコード用の2値配列
code = np.array([
   1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1,
   0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0,
   1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1,
   1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1])

# dpi=100で新しい図を作成
fig = plt.figure(dpi=100)

# 図全体を覆うAxesを追加し、軸を非表示にする
ax = fig.add_axes([0, 0, 1, 1])
ax.set_axis_off()

# 2値データを1行の画像として描画
ax.imshow(code.reshape(1, -1), cmap='binary', aspect='auto',
          interpolation='nearest')

plt.show()

実行結果

上記のコードを実行すると、0が白、1が黒に対応した縞模様のバーコード風画像が表示されます。cmap='binary' を指定することで、白黒のコントラストがはっきりとした見た目になります。

ポイント解説

  • reshape(1, -1): 1次元の配列を1行×N列の2次元配列に変換しています。これにより、横長の縞模様として描画されます。
  • aspect='auto': 縦横比を自動調整し、図のサイズに合わせてバーが引き伸ばされます。
  • interpolation='nearest': 補間を行わないため、各バーの境界がくっきりと表示されます。
  • set_axis_off(): 目盛りや軸ラベルを消すことで、バーコードらしいすっきりした見た目になります。

この手法は、実際の商品コード(JANコードなど)の厳密なエンコードには対応していませんが、データの可視化やデモ、プレゼンテーション資料における装飾的な用途には十分活用できます。より本格的なバーコードが必要な場合は、「python-barcode」などの専用ライブラリの利用も検討してみてください。

  1. Matplotlibでpcolormeshをアニメーション化する方法【コード例付き解説】

    Matplotlibでpcolormesh(擬似カラープロット)をアニメーション化する方法を、具体的な手順とサンプルコード付きで解説します。 アニメーション化の基本的な流れ pcolormeshをアニメーションさせるには、以下の手順に従います。 figureオブジェクトとサブプロットを作成する numpyを使ってx、y、tのデータポイントを生成する meshgrid関数で座標ベクトルから座標行列(X3、Y3、T3)を作成する pcolormesh()メソッドを使って、不規則な矩形グリッド上に擬似カラープロットを描画する カラーバーをfigureに追加する FuncAnimationクラスを使

  2. Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

    Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線