開始する前に、Python環境を構成し、サードパーティライブラリmatplotlibがインストールされているかどうかを確認してください。
この記事はブロガーの研究ノートです。欠点を指摘してください。
1.matplotlibライブラリの概要
1.1matplotlibライブラリの概要
matplotlibライブラリは、100を超える画像を含む、データ視覚化用のサードパーティライブラリです。これは、matlabの長所と短所を組み合わせて、これに基づいてmatplotlibを形成します。matplotlibはさまざまな視覚化クラスで構成されており、複雑な内部構造を持っています。したがって、これらの基本関数は、matplotlibのコマンドサブライブラリであるmatplotlib.pyplotを介して呼び出すことができます。
一般に、pyplotサブライブラリを次のように参照します。
import matplotlib.pyplot as plt
1.2小規模テスト
まず、簡単な画像を描きます。
import matplotlib.pyplot as plt
plt.plot([1,2,3,7,4,2]) # 传入xy轴参数,默认为y轴
plt.ylabel("Grade") # 指定y轴 名称
plt.savefig("test",dpi=600) # 保存图像 默认png格式,其中dpi指图片质量
plt.show() # 展示图片
効果は次のとおりです。
1.3pyplotの描画領域
Pyplotは、plt.subplot(nrows、ncols、plot_number)メソッドを使用して、同じ描画ボードに複数のサブプロットを描画します。パラメータは次のように説明されています。
- nrows:水平番号
- ncols:垂直番号
- plot_number:現在のサブグラフの領域位置。
たとえば、plt.subplot(2,2,3)は、グローバルプロットエリアが4つのサブエリアに分割され、現在のサブプロットが3番目のサブプロットの位置にあることを意味します。サブプロットの数が1桁の場合、subplot()のパラメーターは、コンマなしで区切ることができます。つまり、subplot(223)です。
1.4 pyplotのplot()描画関数
プロットはmatplotlibで最も重要な描画関数であり、そのすべてのパラメーターは次のように導入されています
。plt.plot(x、y、format_string、** kwargs)
- x:x軸のデータ(リストまたは配列)はオプションのパラメーターです。
- y:リストまたは配列のy軸のデータが必要です。
- ** kwargs:2番目の曲線のパラメーターにすることができます。複数の曲線を描画する場合は、xyパラメーターが存在する必要があります。色、線種、マーカーなどもあります。
以下に、format_stringパラメーターの詳細な説明を示します
。format_stringパラメーターは、曲線のフォーマットを制御する文字列です。これはオプションのパラメーターですが、非常に重要です。カラー文字、スタイル文字、マーク文字で構成されており、組み合わせて使用できます。
(1)カラー文字、つまり曲線の色を制御する文字。色を制御する文字は多数あるため、ここでは一般的に使用される文字の一部のみを示します。
- b:青
- g:緑
- r:赤
- k:黒
- w:白
- y:黄色
- c:ターコイズ
- m:マゼンタ
- #000000:RGBカラーも使用できます
(2)スタイル文字、つまり曲線スタイルを制御する文字:
- "_":実線
- "-": 破線
- ":": 点線
- "":ワイヤレスバー
(3)マーキング文字:データ座標点のマーク:
- 「。」:ドットマーク
- "、":ピクセルマーク
- 「v」:逆三角形のマーク
- 「^」:上三角マーク
- ">":直角三角形マーク
- 「<」:左三角マーク
- 「1」:下の花の三角形のマーク
- 「2」:上の花の三角マーク
- 「3」:左花三角マーク
- 「4」:右花三角マーク
- 「s」:四角の実線
- 「p」:五角形の実線
- 「*」:アスタリスクマーク
- 「o」:黒丸マーク
- 「+」:+記号
- 「x」:マークx
- 「D」:ひし形マーク
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(20)
plt.plot(a,a,"r--o",a,a*2,"b:",a,a*3,"y_")
plt.savefig("01",dpi=600)
plt.show()
画像は次のとおりです。
1.5ピプロットの中国語表示
Pyplotはデフォルトで中国語の表示をサポートしていないため、コード設定を行う必要があります(設定されていない場合、出力はいくつかの白抜きの四角になります)。
フォントを変更する方法は2つあります。最初の方法を見てみましょう。
(1)rcparamsを使用してグローバルフォントを変更し
ます。図に示すように、中国語を設定しない場合の効果を見てみましょう。
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(20)
plt.plot(a,np.cos(0.02*a))
plt.xlabel("这是中文")
plt.savefig("03",dpi=600)
plt.show()
効果は次のとおりです。
x軸の符号は正方形であることがわかります。次に、matplotlibのrcparamsを導入して、グローバルフォント属性を設定します。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
matplotlib.rcParams["font.family"] = "SimHei" # 设置字体为黑体
a = np.arange(20)
plt.plot(a,np.cos(0.02*a))
plt.xlabel("这是中文")
plt.savefig("03",dpi=600)
plt.show()
画像は次のとおりです。
中国語を表示できることがわかります。フォントタイプの設定に加えて、次の属性もあります。
- font.style:フォントスタイル(通常または斜体)
- font.size:フォントサイズ
ただし、x軸のロゴであろうとxy軸のスケールであろうと、注意深く観察すると、それらのフォントはすべて太字になっています。これは全世界にとって非常に不親切なので、中国語を個別に表示する場所を設定できます。2番目の方法は次のとおりです。
(2)fontpropertiesパラメーターを使用してフォントを個別に設定します。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# matplotlib.rcParams["font.family"] = "SimHei" # 设置字体为黑体
a = np.arange(20)
plt.plot(a,np.cos(0.02*a))
plt.xlabel("这是中文",fontproperties="SimHei",fontsize=20)
plt.savefig("03",dpi=600)
plt.show()
画像の出力効果は次のとおりです。
fontpropertiesパラメーターを使用すると、必要なテキストを簡単に設定できるため、描画がより柔軟になります。
1.6ピプロットテキスト表示
テキスト表示は、軸、凡例、タイトル、テキスト注釈などのコンテンツを画像に追加して、画像をよりプロフェッショナルにすることです。同時に、LaTeX構文をサポートしているため、よりプロフェッショナルになります。以前は、plt.xlabel()を使用して、テキスト表示関数の1つであるx軸にテキストラベルを追加しました。すべてのテキスト表示ラベルは次のとおりです。
- plt.xlabel():x軸にテキストラベルを追加します
- plt.ylabel():テキストラベルをy軸に追加します
- plt.tilte():画像の上部中央にある画像にタイトルを追加します
- plt.text():任意の位置にテキストコメントを追加します
- plt.annotate():画像に矢印付きの注釈を追加します
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0, 5, 0.02)
plt.plot(a,np.cos(2*np.pi*a), "r--")
plt.xlabel("时间",fontproperties="SimHei",fontsize=18,color="yellow")
plt.ylabel("振幅",fontproperties="SimHei",fontsize=18,color="green")
plt.title(r"正弦波图 $y=cos(2\pi x)$",fontproperties="SimHei",fontsize=26)
plt.text(2,1,r"$\mu=100$",fontsize="15")
plt.axis([-1,6,-2,2]) # x轴坐标尺度
plt.grid(True) # 显示网格
plt.savefig("04",dpi=600)
画像は次のとおりです。
plt.annotate()関数をもう一度見てみましょう。そのパラメーターは次のとおりです。
- s:コメントテキストコンテンツ
- xy = arrow_crd:矢印が指す場所
- xytext = text_crd:テキストの場所
- arrowprops = dict:テキストプロパティ
上記の例を変更してみましょう。
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0, 5, 0.02)
plt.plot(a,np.cos(2*np.pi*a), "r--")
plt.xlabel("时间",fontproperties="SimHei",fontsize=18,color="yellow")
plt.ylabel("振幅",fontproperties="SimHei",fontsize=18,color="green")
plt.title(r"正弦波图 $y=cos(2\pi x)$",fontproperties="SimHei",fontsize=22)
# plt.text(2,1,r"$\mu=100$",fontsize="15")
plt.annotate(r"$\mu=100$",xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor="black",shrink=0.1,width=2))
plt.axis([-1,6,-2,2]) # x轴坐标尺度
plt.grid(True) # 显示网格
plt.savefig("04",dpi=600)
plt.show()
画像は以下の通りです
1.7pyplotのサブ描画領域
サブプロット関数は複数の通常のサブフィギュア領域を描画するために使用されることを前述しましたが、その領域に不規則な画像を描画する場合はどうすればよいですか?複雑なサブプロット構造を設計するために、plt.subplot2grid()関数がここに提供されています。グリッドを設計し、グリッドを選択し、選択した行と列を決定し、それを拡張して必要な領域を形成します。パラメータは次のとおりです。
- gridspec:グリッド構造を設定します
- curspec:選択したグリッドの初期位置
- colspan:グリッド拡張の列数(現在に基づく)
- rowspan:グリッド拡張の行数(現在に基づく)
画像を使用して理解します
。plt.subplot((4,4)(2,0)、colspan = 3、rowspan = 2)は、描画領域を4 * 4の領域に分割し、3番目の行と最初の行を使用します。ベンチマークとしてのサブ領域(黒)の列は、2列と1行(灰色)を拡張します。つまり、図に示すように、赤い領域は前のサブイメージ領域をカバーしています。
上記のメソッドは描画時にコードがより複雑になるため、matplotlibは、複雑なサブグラフを設計するための別のより単純なライブラリgridspec()を提供します。
図に示すように、グレーと黒を選択する場合は、コードと画像で説明します。サブピクチャ領域としての部分として、これを行うことができます。
import matplotlib.pyplot as plt
from matplotlib import gridspec
gs = gridspec.GridSpec(4,4)
plt.subplot(gs[2:,0:-1])
これは、numpyでの2次元配列のスライス操作と非常によく似ています。つまり、2次元のgs配列では、1次元の添え字2と2の後の要素を選択してから、0から最後から2番目の領域までの2次元の添え字を選択します。
1.8pyplotの基本的なチャート関数について
pyplotには多くの基本的なチャート機能があり、これらのチャートのいくつかは非常に一般的に使用され、いくつかはめったに使用されません(使用量が少ないからといって重要でないという意味ではないことに注意してください)。以下のコンテンツでは、ブロガーが一般的に使用されるチャートを簡単に紹介しています。より基本的なチャートについて知りたい場合は、matplotlibの公式Webサイトにアクセスして学習できます。ここにリンクがあります:matplotlib公式ウェブサイト
1.9パイプロット円グラフの描画
円グラフはシンプルで直感的であり、パーセント記号のあるデータによく使用されます。円グラフはplt.pie()によって描画されます。
import matplotlib.pyplot as plt
labels = "a","b","c","d","e","f","g" # 每一块的标签
sizes = [10,20,30,15,15,10,20] # 每一块饼图的尺寸
explode = (0,0.1,0,0.5,0,0.2,0) # 指定哪一块是否突出,以及突出强度
plt.pie(sizes,explode=explode,labels=labels,autopct="%1.1f%%",shadow=True,startangle=90) # autopct 是百分数的显示格式,shadow是否带有阴影 startangle是饼图的起始角度
plt.axis("equal") # 画出图像是正圆形
plt.show()
画像は次のとおりです。
詳細については、公式のpie()ドキュメントを参照してください。
1.10ピプロットヒストグラムの描画
誰もがヒストグラムに精通していると思うので、ヒストグラムを描画する方法は、最初にコードの一部を見てみましょう。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
mu = 100
sigma = 200
a = np.random.normal(mu,sigma,size=100)
plt.hist(a,20,histtype="stepfilled",facecolor="b",alpha=0.75)
plt.title("直方图",fontproperties="SimHei")
plt.show()
画像は次のとおりです。
numpyを使用して正規分布の配列aを生成し、それを使用してヒストグラムを描画します。plt.hist()関数を使用してヒストグラムを描画します。ここで、aは入力データであり、2番目のパラメータービンは画像内のヒストグラムの数を制御するために使用されます(ここでは合計20個のヒストグラムがあることを意味します)。数値分割方法配列から最大と最小の2つの値を選択し、範囲内のビン領域に分割します。各ビンの要素数は、このヒストグラムの高さです。
詳細については、公式のhist()ドキュメントを参照してください。
1.11ピプロット散布図の描画
散布図は、プロットまたは散布図を介して描画できます。散布図は、プロットと同様に描画されます。ここではこれ以上の紹介はありません。公式のscatter()ドキュメント