私はいくつかの小さなデータセットのために私のdjangoアプリケーションでmatplotlibを使用していくつかのカラフルな散布図を描画していますが、インポートステートメントは、javascriptのグラフ作成ユーティリティを使用して私の以前のバージョンと比較して、ページをロードするために1/2秒未満ではなく、ほぼ3秒かかる。私のオフィスのほとんどの人が気にしないにもかかわらず、それは私にはバグです。 - または多分異なるバックエンドが速くなるWebサーバー(django)アプリケーションのmatplotlibの読み込み時間を短縮する方法はありますか?
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
fig = Figure(figsize=[7, 7])
canvas = FigureCanvas(fig)
ax = fig.add_axes([1, 1, 5, 5])
ax.scatter(x, y, c=colors, s=15, linewidth=1.5)
ax.set_xticklabels(labels, rotation=-40, horizontalalignment='left')
fig.savefig(file)
図をロードするために、より軽量の方法があります:
ここで基本的なコードですか?
私の同僚がウェブサイトから画像をコピー&ペーストできる必要があったため、javascriptユーティリティから切り替えました。私はmatplotlibを使う考えが好きです。なぜなら今、私はいくつかの魅力的なグラフを作ることができるからです。しかし、より良いパフォーマンスが得られるならば、別の軽量ツールを公開しています。
もう1つのアイデアは、常に実行されているクエリのポートをリッスンしてイメージを返す、何らかの種類のサーバーアプリケーションを作成することです。次に、各クエリに対してmatplotlibライブラリ全体をロードする必要はありません。しかし、それは多くの仕事のように聞こえる。
メインビューでイメージをレンダリングしてファイルに保存しているのですか、別のビューでレンダリングして、HttpResponseを返していますか?キャッシングは可能ですか? –
グラフを一時的なpngファイルに保存してから、メインビューテンプレートが一時ファイルへのパスを取得して表示します。人々はグラフをカスタマイズでき、ほとんどの画像は数回しか見えないので、キャッシングはあまり役に立ちません。 – brfox