matplotlib.pyplot使い方まとめ(随時更新中)

目次

使用するmoduleのインポート

import numpy as np

import matplotlib.pyplot as plt
%% matplotlib inline

図のレイアウト

データの用意

x = np.random.normal(50, 10, 1000) #平均値50,標準偏差10,サンプル数1000でガウス分布を作成
y = np.random.normal(50, 10, 1000)

図のサイズの変更

plt.figure(figsize=(5,5))  #デフォルトでは6.4*4.8
plt.scatter(x, y)
plt.show()

f:id:slimelimes:20190923210822p:plain
デフォルトサイズ(比較用)

f:id:slimelimes:20190923210849p:plain
figsize=(5,5)

タイトル、X軸の名前、Y軸の名前をつける

それぞれ、plt.title("タイトル名")、plt.xlabel("X軸の名前")、plt.ylabel("Y軸の名前")の指定できます。

plt.figure(figsize=(5,5)) #図の大きさを変更
plt.scatter(x,y)
plt.title("Normal Distribution")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

f:id:slimelimes:20190925124052p:plain

x軸,y軸の範囲の設定

plt.xlim(Xの最小値, Xの最大値)
plt.ylim(Yの最小値, Yの最大値)

色の変更

cオプションを指定します。 引数として、以下のstring型の文字が取れます。色名の代わりに省略コードで指定することもできます。

省略コード 色名
'b' blue
'g' green
'r' red
'c' cyan
'm' magenta
'y' yellow
'k' black
'w' white


plt.scatter(x, y, c="red")
plt.show()

f:id:slimelimes:20190924113007p:plain

透過率の変更

alphaオプションを使います。0から1の値を指定します。0に近いほど透明になります。

plt.scatter(x, y, alpha=0.3)
plt.savefig("changealpha.png")
plt.show()

f:id:slimelimes:20190924181011p:plain

図の保存

plt.savefig(ファイル名)でできます。plt.show()より前に実行しないとうまく保存されないことに注意してください。

plt.plot(x, y)
plt.savefig("picture.png") #picture.pngという名前のPNGファイルが現在いるディレクトリに保存されます。
plt.show()  #plt.savefigとの順番に注意

グラフの作成

plt.plot(x, y)  #x and y are array-like
plt.show()

標準偏差を表示

pltのerrorbarメソッドを使います。メソッドのデフォルトの設定では、エラーバーが縦棒となっているので、「工」の形にするために capthick, capsizeのオプション を 0 以上の値に指定しておく必要があります。

plt.plot(label,mean)
plt.errorbar(label,mean,std,capsize=10,capthick=1)  ##stdのところには、標準偏差あるいは誤差を入力します。
plt.title("mean+errorbar")
plt.xlabel("category")
plt.ylabel("number of people")
plt.show()

ヒストグラムの作成

plt.hist(X,bins=10)
plt.show()

散布図の作成

基本

# データの用意
#平均値50,標準偏差10,サンプル数1000でガウス分布を作成
x = np.random.normal(50, 10, 1000) 
y = np.random.normal(50, 10, 1000)

plt.scatter(x, y)
plt.show()

f:id:slimelimes:20190923210849p:plain

複数の系列を重ねて散布図にする場合

plt.scatterを繰り返せば大丈夫です。散布図の色はデフォルトでは青色になっているため、系列ごとに色を変えましょう。

# データの用意
x1 = np.random.normal(100, 10, 1000)
y1 = np.random.normal(50, 10, 1000)
x2 = np.random.normal(0, 10, 1000)
y2 = np.random.normal(50, 10, 1000)
x3 = np.random.normal(50, 10, 1000)
y3 = np.random.normal(100, 10, 1000)
x4 = np.random.normal(50, 10, 1000)
y4 = np.random.normal(0, 10, 1000)

#散布図の作成

plt.figure(figsize=(5,5)) #図の大きさを設定

plt.scatter(x1, y1, c="red")
plt.scatter(x2, y2, c="blue")
plt.scatter(x3, y3, c="yellow")
plt.scatter(x4, y4, c="green")

plt.show()

f:id:slimelimes:20190924175004p:plain

凡例を載せる方法

plt.scatterのlabelオプションで系列の名前を指定し、plt.legend()で凡例を表示します。locオプションで凡例を表示する位置を指定することができます。

# データの用意
x1 = np.random.normal(10, 10, 1000)
y1 = np.random.normal(0, 10, 1000)
x2 = np.random.normal(-10, 10, 1000)
y2 = np.random.normal(0, 10, 1000)

plt.figure(figsize=(5,5)) #図の大きさを設定

plt.scatter(x1, y1, c="red", alpha=0.3, label="A")
plt.scatter(x2, y2, c="blue", alpha=0.3, label="B")

plt.legend(loc='upper left')
#locとして以下が選べます。
# upper right,upper left,lower left,lower right,right,center 
#left,center right,lower center,upper center,center

plt.show()

f:id:slimelimes:20190925120618p:plain

オプション

  • fontsize = int 凡例のフォントの大きさ
  • frameon = True/False 判例に枠をつけるかどうか。

Groove Music エラーコード0xc00d5212の対処法

状況

Ubuntu上で作ったwavファイルをwindows10の標準アプリのGroove Musicで再生しようとしても、次のようなエラーがでて再生できませんでした。

f:id:slimelimes:20190917144656p:plain

・また、Windows media playerでも再生できなかったです。

原因

UbuntuとWindows10でwavファイルのコーディング方式が異なるためであると考えられます。

解決方法

マルチプラットフォーム対応のメディアプレイヤーを利用したところ無事再生できました。(今回は、VLC media playerというフリーソフトをダウンロードしました。)
https://www.videolan.org/index.ja.html

情報理論を簡単に説明する。(第一章 序論)

この記事は、「今井秀樹(1984) 『情報理論』昭晃堂」の第一章を勉強した内容を記録した自分用のノートです。詳しい内容が気になる方は、元の教科書を買ってみてください!

1. 情報理論とは

1.1 情報の伝達

情報理論とは、情報の伝達をいかに効率よく、そして信頼性高く行うかに関する理論です。情報が伝達されれば、受け手の知識によって構成される世界に変化が起きます。この受け手の世界の変化が情報の伝達の本質的な点であると考えます。 情報理論では、この受け手の世界の変化をある集合に対する確率分布の変化として表せるような場合を考えます。(逆に言えばそのように表せるものに理論の適用範囲を制限しています。)

1.2 通信システムのモデル

通信は、 情報源→符号化→通信路→復号→宛先 という過程を経て行われます。これらの過程について説明します。  情報源とは、文字通り情報を発信する源です。ここから情報は生まれます。情報源から発せられる対象を通報といいます。英語や数字のように離散的なものをデジタル通報、音やテレビのような連続的な量をアナログ通報といいます。  情報は通信路を介して、宛先へ送られます。通信路には一般に何らかの雑音やひずみが存在し、情報が誤って伝えられることもあります。一般に通報はそのまま通信路に入力できず、何らかの変化をする必要があり、その変換のことを符号化といいます。そして、通信路の出力を通報に戻す操作のことを復号といいます。

1.3 符号化

符号化には、大きく分けて2種類の方法があります。 一つは、情報源の統計的性質を利用して、通信の効率化を図る方法で、一般に情報源符号化と呼ばれます。(例:英文を0と1の列に変換して送るとき、使用頻度の高い文字に(E,T,A,Oなど)短い符号を割り当て、逆に頻度の低い文字(Z,Q,J,Xなど)に長い符号を割り当てる。) もう一つは、通信路の雑音や誤りに対処して高信頼化を図る方法で、一般に通信路符号化と呼ばれます。(例:010と送りたいときに、000111000と3回繰り返して送る。)

そして、今後は、情報理論とは、この情報源符号化と通信路符号化をいかに行うべきか、またその限界はどこか、ということに関する理論であると定義します。