NumPy Matplotlib

Matplotlib は Python のプロットライブラリです。NumPy と一緒に使用でき、MatLab の効果的なオープンソース代替手段を提供します。また、PyQt や wxPython などの GUI ツールキットと一緒に使用することもできます。

pip3 インストール:

pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

Linux システムでは、Linux パッケージマネージャを使用してインストールすることもできます:

  • Debian / Ubuntu:

    sudo apt-get install python-matplotlib
  • Fedora / Redhat:

    sudo yum install python-matplotlib

インストール後、次のコマンドを使用してpython -m pip listmatplotlib モジュールがインストールされているかどうかを確認できます。

$ pip3 list | grep matplotlib
matplotlib        3.3.0  

例

例

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y) plt.show()

上記の例では、np.arange() 関数が x 軸上の値を作成します。y 軸上の対応する値は、別の配列オブジェクト y に格納されます。これらの値は、matplotlib パッケージの pyplot サブモジュールの plot() 関数を使用して描画されます。

グラフは show() 関数によって表示されます。

グラフの中国語表示

Matplotlib はデフォルトでは中国語をサポートしていません。次の簡単な方法で解決できます。

ここでは源ノ角ゴシック(思源黑体)を使用します。源ノ角ゴシックは、Adobe と Google がリリースしたオープンソースフォントです。

公式サイト:https://source.typekit.com/source-han-serif/cn/

GitHub アドレス:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

リンクを開いたら、その中から1つ選択してください:

クラウドドライブからダウンロードすることもできます:https://pan.baidu.com/s/10-w1JbXZSnx3Tm6uGpPGOw、抽出コード:yxqu。

OTF フォント(例:SourceHanSansSC-Bold.otf)をダウンロードし、そのファイルを現在実行中のコードファイルに配置します:

SourceHanSansSC-Bold.otf ファイルを現在実行中のコードファイルに配置します:

例

import numpy as np from matplotlib import pyplot as plt import matplotlib # fname はダウンロードしたフォントライブラリのパスです。SourceHanSansSC-Bold.otf フォントのパスに注意してください zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf") x = np.arange(1,11) y = 2 * x + 5 plt.title("サンプル - テスト", fontproperties=zhfont1) # fontproperties は中国語表示を設定し、fontsize はフォントサイズを設定します plt.xlabel("x 軸", fontproperties=zhfont1) plt.ylabel("y 軸", fontproperties=zhfont1) plt.plot(x,y) plt.show()

実行すると、出力結果は下図のようになります:

さらに、システムのフォントを使用することもできます:

from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
    print(i)

font_manager の ttflist に登録されているすべての名前を出力し、中国語フォント(例:STFangsong(仿宋))を見つけて、次のコードを追加します:

plt.rcParams['font.family']=['STFangsong']

線形グラフの代替として、plot() 関数に書式文字列を追加することで離散値を表示できます。次の書式文字を使用できます。

文字 説明
'-' 実線スタイル
'--' 破線スタイル
'-.' 一点鎖線スタイル
':' 点線スタイル
'.' 点マーカー
',' ピクセルマーカー
'o' 円マーカー
'v' 逆三角形マーカー
'^' 正三角形マーカー
'<' 左三角形マーカー
'>' 右三角形マーカー
'1' 下矢印マーカー
'2' 上矢印マーカー
'3' 左矢印マーカー
'4' 右矢印マーカー
's' 正方形マーカー
'p' 五角形マーカー
'*' 星形マーカー
'h' 六角形マーカー 1
'H' 六角形マーカー 2
'+' プラスマーカー
'x' X マーカー
'D' ひし形マーカー
'd' 細長いひし形マーカー
'|' 垂直線マーカー
'_' 水平線マーカー

以下は色の略語です:

文字 色
'b' 青
'g' 緑
'r' 赤
'c' シアン
'm' マゼンタ
'y' 黄
'k' 黒
'w' 白

点を表す円を表示するには、上記の例の線の代わりに、plot() 関数の書式文字列として 'ob' を使用します。

例

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y,"ob") plt.show()

実行すると、出力結果は下図のようになります:

正弦波の描画

次の例では、matplotlib を使用して正弦波グラフを生成します。

例

import numpy as np import matplotlib.pyplot as plt # 正弦曲線上の点の x 座標と y 座標を計算します x = np.arange(0, 3 * np.pi, 0.1) y = np.sin(x) plt.title("sine wave form") # matplotlib を使用して点を描画します plt.plot(x, y) plt.show()

実行すると、出力結果は下図のようになります:

subplot()

subplot() 関数を使用すると、同じ図に異なるものを描画できます。

次の例では、正弦と余弦の値を描画します:

例

import numpy as np import matplotlib.pyplot as plt # 正弦曲線と余弦曲線上の点の x 座標と y 座標を計算します x = np.arange(0, 3 * np.pi, 0.1) y_sin = np.sin(x) y_cos = np.cos(x) # 高さ 2、幅 1 の subplot グリッドを作成します # 最初の subplot をアクティブにします plt.subplot(2, 1, 1) # 最初の画像を描画します plt.plot(x, y_sin) plt.title('Sine') # 2 番目の subplot をアクティブにし、2 番目の画像を描画します plt.subplot(2, 1, 2) plt.plot(x, y_cos) plt.title('Cosine') # 画像を表示します plt.show()

実行すると、出力結果は下図のようになります:

bar()

pyplot サブモジュールは、棒グラフを生成する bar() 関数を提供します。

次の例では、2 組の x 配列と y 配列の棒グラフを生成します。

例

from matplotlib import pyplot as plt x = [5,8,10] y = [12,16,6] x2 = [6,9,11] y2 = [6,15,7] plt.bar(x, y, align = 'center') plt.bar(x2, y2, color = 'g', align = 'center') plt.title('Bar graph') plt.ylabel('Y axis') plt.xlabel('X axis') plt.show()

実行すると、出力結果は下図のようになります:

numpy.histogram()

numpy.histogram() 関数は、データの頻度分布のグラフィカルな表現です。水平方向のサイズが等しい長方形は、ビンと呼ばれるクラス間隔に対応し、変数 height は頻度に対応します。

numpy.histogram() 関数は、入力配列とビンの 2 つのパラメータを受け取ります。ビン配列内の連続する要素は、各ビンの境界として使用されます。

例

import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) np.histogram(a,bins = [0,20,40,60,80,100]) hist,bins = np.histogram(a,bins = [0,20,40,60,80,100]) print (hist) print (bins)

出力結果は次のとおりです:

[3 4 5 2 1]
[  0  20  40  60  80 100]

plt()

Matplotlib は、ヒストグラムの数値表現をグラフに変換できます。pyplot サブモジュールの plt() 関数は、データとビン配列を含む配列をパラメータとして受け取り、ヒストグラムに変換します。

例

from matplotlib import pyplot as plt import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) plt.hist(a, bins = [0,20,40,60,80,100]) plt.title("histogram") plt.show()

実行すると、出力結果は下図のようになります:

Matplotlib の詳細な参考資料:

その他の拡張機能