在SVG中如何显示鼠标提示框

SVG代码如下:

<?xml version="1.0" encoding="iso-8859-1"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"

  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">

<svg width="100%" height="100%" onload ="getSVGDoc(evt)"  onzoom="ZoomControl()">

  <script xlink:href="tool_tip.js" type="text/javascript"/>

  <g id="testG" onmouseover = "ShowTooltip(evt, 'Welcome To Here!')" onmouseout = "HideTooltip(evt)">

    <rect x="100" y="100" width="100" height="50" style="fill:rgb(120,255,255);"/>

  </g>

  <g id="tooltip" style="pointer-events: none">

    <rect id="ttr" x="0" y="0" rx="5" ry="5" width="100" height="16"

      style="visibility: hidden"/>

    <text id="ttt" x="0" y="0" style="visibility: hidden">dyn. Text</text>

  </g>

</svg>

SVG中使用的脚步文件tool_tip.js如下:

var svgdoc,svgroot,ttrelem,tttelem,tt;


function getSVGDoc(load_evt)
{
  svgdoc = load_evt.target.ownerDocument;
  svgroot = svgdoc.documentElement;
  ttrelem = svgdoc.getElementById("ttr");
  tttelem = svgdoc.getElementById("ttt");
  // tt=svgdoc.getElementById("tooltip");
}


function ShowTooltip(e, txt)
{
  var posx, posy, curtrans, ctx, cty;
 
  posx = e.clientX;
  posy = e.clientY;
  curtrans = svgroot.currentTranslate;
  ctx = curtrans.x;
  cty = curtrans.y;
 
  tttelem.childNodes.item(0).data = txt;
  ttrelem.setAttribute("x", posx-ctx);
  ttrelem.setAttribute("y", posy-cty-20);
  tttelem.setAttribute("x", posx-ctx+5);
  tttelem.setAttribute("y", posy-cty-8);
  ttrelem.setAttribute("width", tttelem.getComputedTextLength() + 10);
  tttelem.setAttribute("style", "fill: #0000CC; font-size: 11px; visibility: visible");
  ttrelem.setAttribute("style", "fill: #FFFFCC; stroke: #000000; stroke-width: 0.5px; visibility: visible");
}


function HideTooltip()
{
  // tt.style.setProperty("visibility","hidden","");
  ttrelem.setAttribute("style", "visibility: hidden");
  tttelem.setAttribute("style", "visibility: hidden");
}


function ZoomControl()
{
  var curzoom;
  curzoom = svgroot.currentScale;
  svgdoc.getElementById("tooltip").setAttribute("transform","scale("+1/curzoom+")");
}

IE6中显示如下图:

在这里解决的由于平移和缩放后造成提示框相应平移和缩放的bug

 

 

### 回答1: ECharts 支持在 SVG 图上显示内容,可以使用 `graphic` 组件来实现。具体步骤如下: 1. 引入 `graphic` 组件: ```javascript import echarts from 'echarts'; import 'echarts/lib/component/graphic'; ``` 2. 在 ECharts 添加 `graphic` 组件: ```javascript option = { ... graphic: [{ type: 'text', left: 100, top: 100, z: 100, style: { fill: '#333', text: 'Hello ECharts' } }] ... }; myChart.setOption(option); ``` 在上面的例子,我们使用 `graphic` 组件添加了一段文本,它的位置是在 `(100, 100)`,`z` 值为 100,表示它在 ECharts 图表的层级。 3. 其他类型的图形,可以通过 `type` 属性来指定。例如,我们可以添加一个圆形: ```javascript option = { ... graphic: [{ type: 'text', left: 100, top: 100, z: 100, style: { fill: '#333', text: 'Hello ECharts' } }, { type: 'circle', left: 200, top: 200, shape: { r: 50 }, style: { fill: '#f00' } }] ... }; myChart.setOption(option); ``` 在上面的例子,我们添加了一个半径为 50 的红色圆形。 注意,如果您要在 SVG 图上显示内容,需要确保浏览器支持 SVG 技术。 ### 回答2: Echarts 是一个开源的数据可视化库,可以用来呈现各种形式的图表,包括柱状图、折线图、饼图等。在Echarts,我们可以通过使用SVG(Scalable Vector Graphics)来在图表上显示内容。 SVG 是一种基于XML的标记语言,可以用来描述二维图形和图形应用程序。它具有可伸缩性和交互性,能够适应不同的分辨率和设备。Echarts利用SVG来创建图表,可以实现数据可视化以及在图表上添加文字、图例、标签等内容。 要在Echarts的图表上显示内容,我们可以通过使用Echarts提供的几个主要组件来实现。首先,我们可以使用`title`组件来添加图表的标题。可以设置标题的文本内容、位置和样式,使其在SVG图上显示。其次,我们可以使用`tooltip`组件来添加数据提示框,当鼠标悬停在图表上时,可以显示相应的数据信息。同样,通过设置提示框的样式和位置,我们可以在SVG图上显示这些信息。 除了标题和数据提示框,我们还可以使用`legend`组件来添加图例,以解释图表的各个数据系列。通过设置图例的样式和位置,我们可以将其显示SVG图的适当位置上。另外,我们还可以通过使用`graphic`组件来自定义在图表上绘制的图形元素,例如在柱状图上添加文本标签、在折线图上添加点标记等。 综上所述,Echarts可以在SVG图上显示内容,通过使用其提供的组件,我们可以在图表上添加标题、数据提示框、图例等元素,实现更加丰富的数据可视化效果。使用Echarts,我们可以轻松地创建各种图表,并通过SVG来展示内容,方便用户理解和分析数据。 ### 回答3: ECharts 是一种基于 JavaScript 的前端数据可视化库,可帮助用户轻松创建各种交互式的图表和图形。而 SVG(Scalable Vector Graphics)则是一种可伸缩矢量图形格式,可以实现在浏览器以图像形式展示。 ECharts 提供了多种图表类型供用户选择,例如折线图、柱状图、饼图等。要在 SVG 图上显示内容,可以通过以下步骤来实现。 首先,引入 ECharts 库文件,并确保正确地加载。接着,在 HTML 页面上创建一个容器元素,作为图表的显示区域。 ```html <div id="chart-container" style="width: 600px; height: 400px;"></div> ``` 在 JavaScript ,使用 ECharts 的 API 创建一个实例,并将其与要显示的数据进行绑定。在创建实例时,需要将图表类型和容器元素的 ID 作为参数传入。 ```javascript // 创建实例 var myChart = echarts.init(document.getElementById('chart-container')); // 定义图表配置和数据 var option = { // 配置项及数据 // ... }; // 使用设置的配置项和数据生成图表 myChart.setOption(option); ``` 需要根据具体需求来设置图表的配置项和数据。例如,如果要显示一个柱状图,可以设置 x 轴和 y 轴的数据,设置柱状图的颜色、样式等等。 ```javascript // 设置图表配置和数据 var option = { // 其他配置项 xAxis: { data: ['类别1', '类别2', '类别3', '类别4', '类别5'] }, yAxis: {}, series: [{ name: '柱状图示例', type: 'bar', data: [10, 20, 30, 40, 50] }] }; // 使用设置的配置项和数据生成图表 myChart.setOption(option); ``` 最后,将生成的图表展示在 SVG 图上。这里的 SVG 图就是之前创建的容器元素,ECharts 会将图表渲染到该容器,从而实现在 SVG 图上显示内容。 通过以上步骤,我们可以使用 ECharts 在 SVG 图上展示各种图表和图形,从而丰富网页的数据可视化效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值