【问题标题】:mpld3 plot, annotations issuesmpld3 绘图,注释问题
【发布时间】:2015-11-17 11:51:25
【问题描述】:

我正在使用 mpld3 在 Intranet 网站上显示图表。我正在使用将图形保存到字典并使用 mpld3.js 在客户端呈现它的选项。

除了我想使用注释时,图表渲染得很好。那些明显抵消了。而且我不明白为什么,因为即使我将偏移量设置为 (0, 0),注释仍然很遥远。

为了说明这一点,我复制并粘贴了这篇文章中给出的示例: Matplotlib: How to put individual tags for a scatter plot

这是 matplotlib 正确生成的图像:

这是用mpld3制作的:

请注意,这两个图像是使用上述链接中的代码同时生成的。 matplotlib 是使用:

plt.show()

然后手动保存。

mpld3 中的那个是用:

 graph_data = json.dumps(fig_to_dict(fig))

然后在客户端使用mpld3.js生成graph_data,除了使用注解之外,它工作得非常好。

你知道它为什么会这样吗? 最终我可以只显示直接从 matplotlib 生成的图像,但是具有交互式图表是一个不错的奖励。

【问题讨论】:

    标签: python matplotlib mpld3


    【解决方案1】:

    plt.annotate 似乎是 mpl 功能,mpld3 尚不支持。我已将其添加到list of missing features。欢迎请求请求!

    对于一个 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-')
    

    这里是a notebook that shows it in action。您可能还对HTML Tooltips plugin 感兴趣。

    【讨论】:

    • 感谢您的回答,抱歉回复晚了。这确实解决了我的问题。最后,我决定直接显示图形的 png 图像,而不是使用 mpld3,因为我遇到了其他问题,而且几乎没有分配预算来开发我被要求做的事情。
    猜你喜欢
    • 1970-01-01
    • 2021-02-22
    • 2021-09-16
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多