pythonで棒グラフを描く
pythonで棒グラフを描こうと思って,必要な要素がいろいろあるんだけど,
要素が散らばっていて,イマイチ検索に時間がかかるので個人的にここにまとめておく.
あとまあ,久々に更新しておきたいっていうのもある.
pyplotを使って,リストを棒グラフ化する.
とりあえず,pandasを使って,データフレーム化しているとする.
以下は例.
# 一部品のピッキング時間の平均と偏差(棒グラフとエラーバー) if len(one_picking_time_rw) != 0: fig = plt.figure(figsize = (GRAPH_WIDTH, GRAPH_HEIGHT)) ax = fig.add_subplot(1, 1, 1) ax.bar(1, one_picking_time_rw_ave, yerr = one_picking_time_rw_std, ecolor = "black", capsize = 20) ax.annotate(str(one_picking_time_rw_ave) + "+/-" + str(one_picking_time_rw_std), xy = (1 - 0.3, one_picking_time_rw_ave + one_picking_time_rw_std + 0.3), fontsize = TICKS_FONTSIZE) plt.yticks(np.arange(0, PICKING_TIME_MAX + 1, 0.1), fontsize = TICKS_FONTSIZE) plt.xticks(range(0, 3, 1), fontsize = TICKS_FONTSIZE) plt.grid(which = "major", color = "gray", linestyle = "--") plt.ylabel("Picking Time [s]", fontsize = LABEL_FONTSIZE) plt.savefig(OUT_DIR_FLAG + "PNG/" + "picking_time_psd_ave.png", bbox_inches = "tight") plt.savefig(OUT_DIR_FLAG + "PDF/" + "picking_time_psd_ave.pdf", bbox_inches = "tight") plt.savefig(OUT_DIR_FLAG + "EPS/" + "picking_time_psd_ave.eps", bbox_inches = "tight") plt.close()
png出力の結果はこんな感じ.
ax.bar(x, y, yerr, ecolor, capsize)
について,
- x:棒グラフのx座標位置
- y:棒グラフのy値
- yerr:エラーバーの値
- ecolor:エラーバーの色
- capsize:エラーバーの端の横棒のサイズ
ax.annotate(str, xy, fontsize)
でグラフ中に文字列を挿入できて,
- str:挿入する文字列
- xy:挿入する座標
以上.
参考URLは
matplotlib で棒グラフを描く – Python でデータサイエンス
グラフ中にデータラベル(数値)を挿入する(matplotlib) | mkacky
かな.