Python—matplotlib の使用法の詳細な説明

目次

1. matplotlib の概要

1.1 設定ファイルによる設定

3.2 rcParams['param_name'] による設定

3.3 matplotlib.rc() 関数による設定

2. matplotlib で簡単なグラフィックを描画する

2.1 plt.subplots を使用した描画

2.2 図の構造

2.2.1 図 図

2.2.2 軸

2.2.3 軸

2.2.4 アーティスト

2.2.5 描画関数の入力データ型

2.2.6 コーディング スタイル、オブジェクト指向 (OO) および pyplot 関数インターフェイス


1. matplotlib の概要

MatplotlibこれはPythonエコシステムの重要な部分であり、視覚化のための描画ライブラリです。出版物品質レベルで美しいグラフィックスを生成できる同様のmatlabコマンドと視覚化インターフェイスの完全なセットを提供し、描画を非常にシンプルにして使いやすくします。パフォーマンスとパフォーマンスの優れたバランス。APIMatplotlib

インストールが成功したら、追加のファイルを設定することなく、Python他のライブラリと同様にインポートして使用できます。通常、インポート後にエイリアスを使用しますMatplotlibmpl

matplotlib を mpl としてインポート

Matplotlibこの構成は、描画グラフィックスのデフォルト スタイルを変更するためによく使用されます。Matplotlib構成ファイルには、さまざまなデフォルト グラフィック構成情報が含まれています。これらの構成情報を変更し、グローバル パラメータを変更することで、描画されたグラフィックのスタイルをカスタマイズできます。これらのパラメータは、グラフィック サイズを変更できます、配色、フォント、その他の一連の情報。図面の構成は複数の方法で完了できます。構成、動的構成、関数構成Matplotlibの 3 つの構成方法が紹介されています配置文件rcParams['param_name']matplotlib.rc()

1.1 設定ファイルによる設定

構成ファイルは、いくつかの異なるレベルに分割することもできます。すべてのグラフィックスで使用されるデフォルト構成を変更したい場合は、グローバルなデフォルト構成を変更する必要があります。また、異なるタスクや異なるユーザーの使用に従って異なる構成を使用する必要がある場合は、異なる構成を使用する場合は、異なるユーザーやタスクに異なるグラフィックス構成を使用できるように、ローカル構成ファイルを変更する必要があります。構成ファイルの範囲に応じて、グローバル構成ファイル、ユーザーレベル構成ファイル、現在のタスク構成ファイルの 3 つのレベルに分けることができます。異なるシステムの 3 レベルのファイルは異なるディレクトリにあり、次のコードを使用して構成ファイルのパスを表示できます。

import matplotlib as mpl
import os
​
# 全局配置目录
print(mpl.__path__)
# 当前用户配置目录
print(mpl.get_configdir())
# 当前任务配置目录,即当前代码运行目录
print(os.getcwd())

  • グローバル設定ファイルは、のインストール ディレクトリmpl-data\matplotlibrcにありますMatplotlib。たとえばWindowD:\Program Files\Python39\lib\site-packages\matplotlibディレクトリにインストールされている場合、グローバル設定ファイルの完全なファイル名は ですD:\Program Files\Python39\lib\site-packages\matplotlib\mpl-data\matplotlibrc。デフォルトでは、グラフィックスはこの設定ファイルを使用して描画されます。

  • ユーザーレベルの構成ファイルは、.matplotlib\matplotlibrcユーザー ディレクトリの下にあります。たとえば、ユーザー ディレクトリが の場合C:\Users\Brainiac\、対応する構成ファイルは ですC:\Users\Brainiac\.matplotlib\matplotlibc。このファイルが存在しない場合は、グローバル構成ファイルに従って作成および変更することもできます。ユーザーのニーズ。

  • 現在のタスク構成ファイルはmatplotlibrc、コード実行ディレクトリの下にあり、現在のタスク コードの構成をカスタマイズするために使用できます。Matplotlibこのファイルはデフォルトでは存在しません。つまり、グローバルまたは現在のユーザー構成ファイルがデフォルトで使用されます。必要に応じてこのファイルを作成し、構成できます。

3.2 rcParams['param_name'] による設定

現在のファイルのカスタム構成を単純に変更するだけの場合は、rcParams['param_name']より迅速に変更できます。次のコードを使用して、どのプロパティをカスタマイズできるかを確認できます。

print(mpl.rc_params())
print(mpl.rcParamsDefault)
print(mpl.rcParams)
  1. mpl.rc_params(): このメソッドは、現在の matplotlib ランタイム構成パラメーターを含む辞書を返します。これらの構成パラメータには、グラフィック要素のデフォルトの色、線のスタイル、フォント設定、軸構成などが含まれます。これらのパラメーターを確認することで、現在の matplotlib 構成を理解し、グラフがどのように描画およびスタイル設定されるかをより深く理解することができます。

  2. mpl.rcParamsDefault: このプロパティは、matplotlib のデフォルトのランタイム構成パラメーターを返します。これらのデフォルトの構成パラメーターは、matplotlib ライブラリのインストール時に事前に設定された値です。matplotlib のデフォルト設定を復元したい場合は、これらのデフォルト パラメータを使用してリセットできます。

  3. mpl.rcParams: このプロパティには、matplotlib の現在の実行時構成パラメーターが含まれており、現在の matplotlib 構成を表します。これらのパラメーターを変更することで、実行時にグラフの表示とスタイルをカスタマイズできます。たとえば、グラフのデフォルトの色、線のスタイル、フォント設定、軸の構成などを、特定のニーズや美的要件に合わせて変更できます。

このメソッドを使用してrcParams['param_name']構成を変更する方法は次のとおりです。ここで、param_nameは属性名です。

例:

mpl.rcParams['lines.linewidth'] = 2
# 修改线条颜色为红色
mpl.rcParams['lines.color'] = 'r'

実際のアプリケーションでは、最も一般的に使用される 2 つの構成には、中国語と中国語のマイナス記号の表示が含まれます。構成が実行されない場合、中国語と中国語のマイナス記号の表示はデフォルトではサポートされません。

#显示中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
#显示负号
mpl.rcParams['axes.unicode_minus']=False

3.3 matplotlib.rc() 関数による設定

matplotlib.rc()同様に設定用の機能も利用できますが、利用方法は以下の通りです。

# 修改线宽
mpl.rc('lines', linewidth=2, color='g')

rc関数の最初のパラメータは、属性groupが属するグループを示します。これは、属性の範囲を制限するために使用されます。たとえば、上の例では、線の幅は line に属し、それを制限するために使用されlinewidthますlines。線でのみ機能しますが、linewidth座標軸などの線の幅には機能しません。座標軸を含むグラフィックの線の幅を変更したい場合はlinewidth、次を使用する必要があります。

# 修改整个图形线宽
mpl.rc('axes', linewidth=2)

2. matplotlib で簡単なグラフィックを描画する

Matplotlib は、1 つ以上の軸を含むことができる Figure (ウィンドウ、Jupyter ウィジェットなど) にデータをプロットします。

2.1 plt.subplots を使用した描画

軸は、xy 座標 (または極座標プロットの theta-r、3D プロットの xyz など) に基づいて点を指定できる描画領域です。Axes を使用してプロットを作成する最も簡単な方法は、pyplot.subplots を使用することです。次に、Axes.plot を使用して、Axes 上にデータをプロットできます。

例えば:

x = np.arange(-10,11)
y = x**2 -2*x + 9
fig,ax = plt.subplots() # 创建一个图fig, 默认包含一个axes
ax.plot(x,y) # 绘制x-y的折线图
plt.show()  # 显示绘制的图。请注意,如果使用save保存图片,需要在show前面保存

 

2.2 図の構造

画像には、タイトル、凡例、x、y 軸ラベル (xlabel、ylabel) などの部分があります。概略図は次のとおりです。

 

2.2.1 図 図

完成イメージ。プロットは、すべてのサブ軸、つまり一連の「特別な」プロット (タイトル、凡例、カラー バーなど)、およびネストされたサブプロットを追跡します。

新しいプロットを作成する最も簡単な方法は、pyplot を使用することです。

fig = plt.figure()  # 空图,没有Axes
fig, ax = plt.subplots()  #有1个Axes
fig, axs = plt.subplots(2, 2)  # 有2x2(两行两列) 个Axes

通常、Figure と一緒に軸を作成すると便利です。または、後で手動で軸を追加することもできます。

2.2.2 軸

軸は Figure に付加され、データのプロットに使用されるグラフィックスが含まれます。

通常、2 つの軸 (Axis) オブジェクトが含まれます。2 つの軸には、それぞれ目盛りと目盛りラベルがあり、軸内のデータのスケールを提供します。には、タイトル ( set_title()で設定)、x ラベル ( set_xlabel()で設定)、および y ラベル ( set_ylabel()で設定) もあります。

Axesクラスとそのメンバー関数は、OOP インターフェイスを使用するための主要なエントリ ポイントであり、ほとんどの描画メソッドはそこに定義されていますax.plot()

2.2.3 軸

軸はスケールと制限を設定し、目盛り (軸上のマーク) と目盛りラベル (目盛りラベル、目盛りをマークする文字列) を生成します。目盛りの位置はロケーター (Locator) によって決まり、目盛りラベル文字列はフォーマッタによって決まります。 (フォーマッタ)の設定。ロケーターフォーマッタを適切に組み合わせると、目盛りの位置とラベルを非常に細かく制御できます。

2.2.4 アーティスト

ここでのrtistは芸術家または画家と訳されます。

基本的に、グラフ上に表示されるものはすべてアーティストです ( chartaxis、およびaxisオブジェクトも含めて)。これには、テキストLine2Dコレクションパッチなどが含まれます。グラフをレンダリングするとき、すべてのアーティストがキャンバスに描画されます。ほとんどのアーティストは 1 つの軸に関連付けられており、そのようなアーティストを複数の軸で共有したり、ある軸から別の軸に移動したりすることはできません。

2.2.5 描画関数の入力データ型

描画関数は、入力として、またはnumpy.array渡すことができるデータを受け取ります。pandas データが正しく動作しない可能性があります。一般的な規則では、プロットする前にデータを に変換します。例:numpy.ma.masked_arraynumpy.asarraynumpy.matrixnumpy.array

b = np.matrix([[1, 2], [3, 4]])
b_asarray = np.asarray(b) # 使用np.asarray()将其转换成np.array类型

dictほとんどのメソッドは、 、np.recarray、 などのアドレス指定可能なオブジェクトも解決できますpandas.DataFrame

Matplotlib を使用すると、キーワード引数を使用して画像を生成し、x と y に対応する文字列を渡すことができます。

散布法は通常、散布図をプロットするためにデータ視覚化ライブラリ (Matplotlib や Seaborn など) によって提供される関数です。

Matplotlib での分散メソッドのパラメータと使用法:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None)

パラメータの説明:

  • x: 横座標デ​​ータ。散布図内の各点の横座標位置を表すために使用される配列またはシリーズです。

  • y: 垂直座標データ。散布図内の各点の垂直座標位置を表すために使用される配列またはシリーズです。

  • s: 点のサイズ (数値または配列) によって、散布点のサイズが制御されます。デフォルト値は ですNone。これは、デフォルトのポイント サイズを使用することを意味します。

  • c: 点の色。散布点の色を制御するために使用される、色の文字列、色のリスト、または配列にすることができます。デフォルト値は ですNone。これは、デフォルトの色を使用することを意味します。

  • marker: ポイントのマーク スタイル。マーク文字列を指定できます。たとえば、「o」はドット、「s」は正方形などを意味します。デフォルト値は ですNone。これは、デフォルトのマークアップ スタイルが使用されることを意味します。

  • cmap: カラー マッピングを指定するために使用されるカラーマップ オブジェクトまたは文字列。c パラメータを数値として指定し、その数値を色空間にマッピングする場合に使用されます。デフォルト値は ですNone。これは、デフォルトのカラーマップを使用することを意味します。

  • norm: データの正規化に使用される正規化オブジェクト。cパラメータを数値で指定する場合に使用します。デフォルト値は ですNone。これは、デフォルトの正規化方法が使用されることを意味します。

  • vminおよびvmax: カラーマップ範囲の最小値と最大値を設定するために使用されます。c パラメータを数値で指定する場合に使用します。デフォルト値は ですNone。これは、データの最小値と最大値を範囲として使用することを意味します。

  • alpha: ポイントの透明度。値の範囲は [0, 1] です。0 は完全に透明、1 は完全に不透明を意味します。デフォルト値は ですNone。これは、デフォルトの透明度を使用することを意味します。

  • linewidths: ポイント境界の幅。ポイントの境界線の幅を制御するために使用されます。デフォルト値は ですNone。これは、デフォルトの線幅が使用されることを意味します。

  • edgecolors: ポイント境界の色。ポイントの境界線の色を制御するために使用されます。デフォルト値は ですNone。これは、デフォルトの色を使用することを意味します。

例:

np.random.seed(19680801)  # 伪随机数
data = {'a': np.arange(50),
        'c': np.random.randint(0, 50, 50),
        'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100
​
fig, axes = plt.subplots(2,1) # fig 拥有2行1列个子图,存放在axes数组(np.array类型)中。
print(axes)
ax = axes[0]
​
ax.scatter('a', 'b', c='c', s='d', data=data)
ax.set_xlabel('entry a')
ax.set_ylabel('entry b')
# 轴域2 ,去掉颜色c,形状s参数。
ax2 = axes[1]
ax2.scatter('a', 'b', data=data)
plt.show()

ax.scatter('a', 'b', c='c', s='d', data=data) は次のように表されます。

  1. 'a', 'b'`: 横軸と縦軸のデータです。「a」は横軸データ、「b」は縦軸データを表します。この例では、「a」と「b」はどちらも 50 個のデータ ポイントを含む numpy 配列で、散布図の横座標と縦座標を描画するために使用されます。

  2. c='c': 散布点のカラーパラメータを設定します。ここで、「c」は色を表し、各散乱点の色が のdata['c']データによって決定されることを意味します。data['c']は、各データ ポイントに色を割り当てる 50 個のランダムな整数を含む numpy 配列です。

  3. s='d':散布点のサイズを設定するパラメータです。ここで、「d」はサイズを表し、各散乱点のサイズが のdata['d']データによって決定されることを意味します。data['d']は、50 個のランダムな浮動小数点を含む numpy 配列であり、各データ ポイントに対して指定されたサイズになります。

  4. data=data: このパラメータは、辞書から「x」軸と「y」軸のデータ(つまり、「a」と「b」)、および色とサイズのパラメータ(「c」と「d」)を取得するように関数に指示しますscatterdata

 

2.2.6 コーディング スタイル、オブジェクト指向 (OO) および pyplot 関数インターフェイス

Matplotlib を使用するには、基本的に 2 つの方法があります。

  • Figure と Axes を明示的に作成し、それらのメソッドを呼び出します (オブジェクト指向 (OO) スタイル)。

  • pyplot を利用して Figure と軸を自動的に作成および管理し、プロットには pyplot 関数を使用します。

OO スタイルを使用すると、OO スタイルの方が優れていると思います。Axes オブジェクトに設定するだけで済みます。非常に明確です。例:

plt.subplots()サブプロットの作成に使用される Matplotlib ライブラリ内の関数です。複数のサブグラフを含むグラフを一度に作成し、これらのサブグラフを NumPy 配列 (np.array 型) に格納できるため、複数のサブグラフの管理と操作がより便利になります。

plt.subplots(nrows=1、ncols=1、sharex=False、sharey=False、squeeze=True、subplot_kw=None、gridspec_kw=None、**fig_kw)
  • nrows: サブグラフの行数、つまりグラフ内にサブグラフが何行あるかを示します。

  • ncols: サブグラフの列数、つまりグラフ内にサブグラフの列が何列あるかを示します。

  • sharex: True に設定すると、すべてのサブプロットが同じ X 軸 (つまり、横座標) を共有します。デフォルト値は False で、各サブプロットに独立した X 軸があることを意味します。

  • sharey: True に設定すると、すべてのサブプロットが同じ y 軸 (つまり、垂直座標) を共有します。デフォルト値は False で、各サブプロットに独立した y 軸があることを意味します。

  • squeeze: True に設定すると、行または列の数が 1 のときに、返されるサブプロット配列が圧縮されます。False に設定すると、行と列の数に関係なく、返されるサブプロット配列は 2 次元配列になります。デフォルト値は True です。

  • subplot_kw: は、各サブグラフに渡される構成パラメーターの辞書です。たとえば、このパラメータを使用して、タイトル、軸ラベルなどのプロパティを設定できます。

  • gridspec_kwGridSpec: は、オブジェクトに渡される構成パラメータの辞書です。GridSpecサブプロットをより柔軟に配置するために使用され、不規則なサブプロット レイアウトを作成するために使用できます。

  • **fig_kw:fig_kwに渡されるplt.figure()他のキーワード引数は次のとおりです。plt.figure()グラフィックを作成する関数で、fig_kwパラメータを使用してグラフィックのサイズやタイトルなどのプロパティを設定できます。

x = np.linspace(0, 2, 100)  # 产生一些数据
​
# 使用OO风格,先产生两个对象 图和轴域 (fig, ax)
fig, ax = plt.subplots(figsize=(5, 5), layout='constrained')
# 调用ax对象的方法
ax.plot(x, x, label='linear')  # Plot some data on the axes. 绘制线性曲线,并给曲线添加标签'线性'
ax.plot(x, x**2, label='quadratic')  # Plot more data on the axes...绘制二次方曲线,并给曲线添加标签'二次方'
ax.plot(x, x**3, label='cubic')  # ... and some more. 绘制三次方曲线,并给曲线添加标签'三次方'
ax.set_xlabel('x label')  # Add an x-label to the axes.
ax.set_ylabel('y label')  # Add a y-label to the axes.
ax.set_title("Simple Plot")  # Add a title to the axes.  添加轴域对象标题
ax.legend()  # Add a legend. 添加图例,用于显示每条曲线对应的标签
plt.show()

このコードには、fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained')Matplotlib を使用してグラフィックスとサブプロットを作成するステートメントがあります。各パラメータの意味を説明しましょう。

  1. figsize=(5, 2.7):グラフのサイズを設定するパラメータです。figsizeグラフィックの幅と高さ (インチ単位) を表す 2 つの要素を含むタプルです。ここでは、グラフィックの幅を 5 インチ、高さを 2.7 インチに設定します。

  2. layout='constrained': これは、Matplotlib では直接定義された意味を持たない非常に特殊なパラメーターです。実際、このパラメーターは Matplotlib の標準パラメーターではないため、この特定のコード スニペットではlayout='constrained'正しく解釈されないか、期待される効果が得られない可能性があります。

Matplotlib にはplt.subplots()関数layoutパラメータが存在しません。plt.subplots()関数のパラメータの中に、layout名前付きパラメータがありません。サブグラフのレイアウトと配置を制御する場合は、plt.subplot()またはplt.GridSpec()およびその他の関数を使用して、より高度なサブグラフの位置決めとレイアウト設定を実行できます。

pyplot 関数スタイルを使用します。

x = np.linspace(0, 2, 100)  # 产生一些数据
plt.figure(figsize=(5, 5), layout='constrained')
plt.plot(x, x, label='linear')  # Plot some data on the (implicit) axes.
plt.plot(x, x**2, label='quadratic')  # etc.
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()

 

おすすめ

転載: blog.csdn.net/longhaierwd/article/details/131908379