Matplotlib
#WIP
フォント
一枚の図や一覧だけを見せられても、どこが重要なのか理解できない問題
グラフを見せたときに、読み解き方が自由にできすぎて逆に困る
例えば1つのグラフ内にできるだけ情報を詰め込むのか、1つだけ(?)いれるのか
後者のほうが読み方が限定されるので意味がわかりやすい
読む能力がある人にとっては前者の方がいい
そもそもグラフは事実の描画であって、作成者の意図を込めない方がいい、とかあったりするのかな
そんなわけないか
目的によりそう
なんかの成果を発表するなら、その成果が一番わかり易いように可視化すべきだろう
これはUIを考えるときと同じ
一方で、事実を並べて、それを材料にして分析をするなら、中立に意図を含めずに可視化したほうがいい、とかありそう
フォント
code:py
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# # システムにインストールされているフォントの一覧を表示
# for font in fm.findSystemFonts():
# print(fm.FontProperties(fname=font).get_name())
# 日本語フォントを設定
plt.rcParams'font.family' = 'Hiragino Sans'
gpt-4.icon
matplotlibとは、Pythonで使用されるデータ可視化のためのライブラリ。簡単に高品質なグラフやチャートを作成でき、データの視覚化に広く使用される。
matplotlibの主な特徴は以下の通り
豊富なグラフタイプ: 折れ線グラフ、棒グラフ、散布図、ヒストグラムなど、多様なグラフをサポート
高いカスタマイズ性: 軸のラベルやタイトル、色、スタイル、レイアウトなどを細かく設定可能
統合性: Jupyter Notebookや他のPythonライブラリ(例: NumPy、pandas)とシームレスに統合
基本的な関数
plt.pyplot()
matplotlibのサブモジュールで、簡単にプロットを作成できる
使用例:
code:python
import matplotlib.pyplot as plt
plt.plot(1, 2, 3, 4, 1, 4, 9, 16)
plt.show()
この例では、x軸とy軸の値を指定して折れ線グラフを描画し、表示する
plt.figure()
グラフの全体的なキャンバスを定義するための関数
使用例:
code:python
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
この例では、1行1列のグリッドに1つのサブプロットを追加する
plt.subplot()
一つのplt.figure内に複数のサブプロットを作成するための関数
使用例:
code:python
plt.subplot(2, 1, 1)
plt.plot(1, 2, 3, 4, 1, 4, 9, 16)
plt.subplot(2, 1, 2)
plt.plot(1, 2, 3, 4, 1, 2, 3, 4)
plt.show()
この例では、2つのサブプロットを縦に配置し、それぞれに別のグラフを描画
plt.title()
タイトルを追加
plt.xlabel(), plt.ylabel()
x軸、y軸にラベルを付ける
plt.legend
凡例を追加
code:python
plt.plot(1, 2, 3, 4, label="Line 1")
plt.plot(4, 3, 2, 1, label="Line 2")
plt.legend()
plt.show()
グラフを表示
plt.savefig()
グラフをファイルとして保存するための関数
gpt-4.icon
plt.polar()
極座標系でデータを表示するグラフで、角度と半径を用いてデータを表現する
code:python
theta = np.linspace(0, 2*np.pi, 100)
r = np.abs(np.sin(theta))
plt.polar(theta, r)
plt.title("Polar Plot Example")
plt.show()
https://gyazo.com/807a628f9b6cb964647e4e2782fde461
plt.contour()
3次元データを2次元に投影し、同じ高さの点を線で結んだグラフで、地形図などで使われる
code:python
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
plt.contour(X, Y, Z)
plt.title("Contour Plot Example")
plt.show()
https://gyazo.com/afcbaf8123f961beab108ee64de03761
3Dプロット
3次元データを視覚化するグラフで、データの複雑な関係をより立体的に表現する
code:python
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = 1, 2, 3, 4
Y = 10, 20, 25, 30
Z = 5, 15, 5, 10
ax.scatter(X, Y, Z)
plt.title("3D Plot Example")
plt.show()
https://gyazo.com/2a6eefa465fdb9f80c667a0bbebafa53