3

mpld3 を使用して、イントラネット Web サイトにグラフを表示しています。グラフを dict に保存し、mpld3.js を使用してクライアント側でレンダリングするオプションを使用しています。

注釈を使用する場合を除いて、グラフは正常にレンダリングされます。それらは明らかに相殺されています。オフセットを (0, 0) に設定しても、注釈はまだかなりずれているため、理由がわかりません。

これを説明するために、この記事の例をコピーして貼り付けました: Matplotlib: How to put individual tags for a scatter plot

以下は、matplotlib によって正しく生成された画像です。 Matplotlib のバージョン

mpld3 で作成したものを次に示します。 ここに画像の説明を入力

上記のリンクのコードを使用して、両方の画像が同時に生成されることに注意してください。matplotlib のものは、次を使用して作成されます。

plt.show()

その後、手動で保存します。

mpld3 のものは次を使用して作成されます。

 graph_data = json.dumps(fig_to_dict(fig))

次に、 をgraph_data使用してクライアント側で生成されますmpld3.js。これは、注釈を使用する場合を除き、完全に正常に機能します。

なぜこのように振る舞うのか分かりますか?最終的には、matplotlib から直接生成された画像を表示するだけで済みましたが、インタラクティブなグラフがあることは素晴らしいボーナスです。

4

1 に答える 1

1

ではまだサポートされていない機能のようplt.annotateです。不足している機能のリストに追加しました。プルリクエスト大歓迎!mplmpld3

ハックな回避策として、 を使用plt.textして単語を取得し、plt.plot追加の装飾を作成できます。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(12345) # set seed for reproducibility

N = 10
data = np.random.random((N, 4))
labels = ['point{0}'.format(i) for i in range(N)]
plt.subplots_adjust(bottom = 0.1)
plt.scatter(
    data[:, 0], data[:, 1], marker = 'o', c = data[:, 2], s = data[:, 3]*1500,
    cmap = plt.get_cmap('Spectral'))
for label, x, y in zip(labels, data[:, 0], data[:, 1]):
    plt.text(x-.05, y+.05,
        label,
        ha = 'right', va = 'bottom')
    plt.plot([x-.05,x], [y+.05,y], 'k-')

これが実際の動作を示すノートです。HTML Tooltips プラグインにも興味があるかもしれません。

于 2015-08-27T16:52:57.383 に答える