freedom-_-qの勉強履歴

メモ書きが主になるかと思います。勉強強制のために一日一記事目指してます。頭良くないので間違いが多々あるかと思います。

3D lolipop chart

エラーが出る場合

AttributeError: 'LineCollection' object has no attribute 'do_3d_projection'
こんなエラー出たら

import matplotlib
print(matplotlib.__version__)

でバージョン確認しよう。自分は3.3.3でエラー出た。
最新(3.4.2)にすればエラーが消えるはず。 matplotlibのアップデートはpip install -U matplotlib

オプショナル引数説明

ax.stem(
    x,
    y,
    z,
    *,
    linefmt='C0-', #茎の色と線種
    markerfmt='C0o', #ロリポップの飴部分の色と形状
    basefmt='C3-', #投影された線の色と線種
    bottom=0, #茎の土台
    label=None, # ラベル(そのまま)
    orientation='z', #茎をどの位置から伸ばすか
)

描画

表示する関数は公式からコピペで済まします。

import matplotlib.pyplot as plt
import numpy as np

theta = np.linspace(0, 2*np.pi)
x = np.cos(theta - np.pi/2)
y = np.sin(theta - np.pi/2)
z = theta

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.stem(x, y, z+1, bottom=8, orientation='z', linefmt='r-', markerfmt='gD', basefmt='b:', label='lolipop')
plt.legend()
plt.show()

配色センスねぇ...

f:id:freedom-_-q:20210706234408p:plain

stem plotもlolipop chartもネーミングセンス良すぎ。

Lolipop stem(茎)
f:id:freedom-_-q:20210706234532p:plain f:id:freedom-_-q:20210706235121p:plain