3

我正在使用 mpld3 在 Intranet 网站上显示图表。我正在使用将图形保存到字典并使用 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是一个mpl尚不支持的功能mpld3。我已将其添加到缺失功能列表中。欢迎请求请求!

对于一个 hacky 解决方法,您可以使用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 工具提示插件感兴趣。

于 2015-08-27T16:52:57.383 回答