generated at
C100の頒布数を可視化する

maptlotlibで販売数の時系列データを描画する

google spread sheetを読み込むには認証情報が必要
時系列の集計はpandas.DataFrame.resamplepandas.Series.resample使えばよさそう
描画はデフォルトではMatplotlibが使われる

累積和も追加したい
cumsum
x軸はbarにするとなぜか間引いてくれない
step sizeの指定ができない
やり方不明なのでいったん飛ばす
seriesのindexのdatatypeを datetime64[ns] にすると棒グラフ描画がバグる
同じ問題が2020年に報告されている
> Unfortunately, matplotlib's bar plots don't seem to play along very happily with pandas dates.
width が異様に大きくなっているようだったので、widthをものすごく小さくすることで解決
最大の値でそれ以降が入力値0の場合に塗りつぶされてしまう
strでdatetimeを入力すると正常になる。なぜ?
日時がずれていると正常表示されるが、同日の時刻だとダメらしい
そもそも時刻が変なので修正する
修正した結果、想定した時刻と違う場所にプロットされていることがわかった
表示期間がおかしい
左:plotだと正常、右:barだと完全にイカれたグラフになる
py
val = [1, 0, 5] datetimeList = ["2022-08-13 00:00:00", "2022-08-13 00:10:00", "2022-08-13 00:10:01"] datetimes = pd.to_datetime(datetimeList) series = pd.Series([1] * len(datetimes), index = datetimes) fig, ax = plt.subplots() ax.bar(series.index, val)
ax.set_xlim(xmin=pd.to_datetime("2022-08-13")) で直すことができるが、↓の問題でグラフはイカれたままになる。むしろ下を直したらこっちは修正しなくてもいいかもしれない
indexで指定した(x, y)=(時刻,値)のペアになっていない`
pandas.DataFrameにまとめた後描画したら描画できるようになった...と思ったら plt.plot() では正常なのに plt.bar() ではC100 1日目感想#62fe0a6e774b1700005213bdになる
matplotlib.axes.Axes
重ねたい→軸コピー
軸を別にしたい→軸コピーすればよかった
secondary_yを指定すればよさそう
サブプロットの軸だけ消したい(ラベルは残したい)


知人との会話
matplotlibはpython描画ライブラリのデファクトスタンダード
matplotlibは難しい(n=3)
同じことが複数の方法でできるように見えて、方法によってできないことがある
「pandasのplotはその場ですぐ確認したい時にしか使わない」
matplotlibが内部的に使われているが、matplotlibともまた違う
matplotlib自体が複雑なのにpandasのplotの複雑性が加わると訳がわからなくなる


>numpy.datetime64 型または datetime.datetime 型 のリストを使えば matplotlib 側が日時を名義尺度ではなく間隔尺度として扱ってくれる