0

我正在开发一个财务报告分析应用程序,主要用于处理数字并相应地绘制条形/线/饼形/散点图。该应用程序基于 Pandas 和 matplotlib,运行良好。最终用户只需将参数发送给我,应用程序就会运行并生成 SVG 格式的图表文件,然后我可以将文件通过电子邮件发送给最终用户。

现在的问题是:SVG文件是静态的,失去了交互能力,最终用户希望图表在鼠标单击或悬停在关键点或区域上时显示相关注释。

我在我的机器上添加了 matplotlib 图表的交互功能,但它依赖于我安装的环境。最终用户在 Windows 上运行,不会安装 python/matplotlib 等,他们想要的只是一个可以双击然后与内容交互的单个文件。

我现在想要的是:将 matplotlib 图表转换为那种文件的最简单方法。有点像将图片转换为 Flash 或动态 SVG 或用户可以交互的任何文件。

是否有任何 python 现有包或对此有任何想法?谢谢,

4

1 回答 1

1

stackoverflow 搜索找到了答案,该答案指向matplotlib.org 上的一个示例。假设用户将在 Web 浏览器中打开此文件,这应该可以工作。如果他用 Inkscape 或静态 SVG 查看器打开它,那么就没有办法给他提供交互式体验。您当然也可以上传图表并向他发送链接。这可能是最方便的,并确保他在浏览器中查看它。

或者,考虑使用d3.js代替 matplotlib。它使用 JavaScript 生成的 SVG 并具有惊人的图表功能。向其中添加所需的交互行为可能更容易。

当鼠标悬停在某个元素上方时显示信息的快速解决方案是使用<title>SVG 中的元素。任何<title>元素的内容都将在悬停时显示为提示信息。看这个例子

<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="150">
  <rect width="50" height="50">
    <title>This is a rectangle</title>
  </rect>
  <circle cx="75" cy="75" r="25">
    <title>This is a circle</title>
  </circle>
  <text y="120">
    <tspan>Move your mouse over the</tspan>
    <tspan x="0" dy="20">elements to see the title text.</tspan>
  </text>
</svg>
于 2013-01-26T21:14:14.657 回答