【问题标题】:Google Charts: Is it possible to have a pie chart substituting the dot in the scatterplot?Google Charts:是否可以用饼图代替散点图中的点?
【发布时间】:2016-11-01 16:44:44
【问题描述】:

我正在使用 Google Charts 构建一个交互式小部件。

现在,得到一个饼图和一个散点图,如下所示。

虽然,希望在散点图中使用饼图而不是蓝色小点(甚至可以是图像。

你知道怎么做吗?

花了 4 个小时做研究,但没有找到任何可以让我做的事情。

【问题讨论】:

  • 我对金融一无所知,但看起来他们没有任何共同的类别......?
  • 他们确实没有,但点可以用和图像代替,也许?
  • 散点图上的points可以修改大小和形状,如正方形、星形。
  • 好吧,我就是这么想的。有没有其他选项可以让一个人用 JS 做散点图?
  • sounds 可能,您可以使用getImageURI 方法获取饼图的图像,类似于this answer -- 然后覆盖 blue tiny点与图像,使用getChartLayoutInterface方法,类似于this answer

标签: javascript jquery charts google-visualization


【解决方案1】:

一些调试?

脚本

<script src="https://www.gstatic.com/charts/loader.js"></script>

////Callback that draws the scatter

        function draw0RiskChart() {
    var data = google.visualization.arrayToDataTable([
      ['Risk in %', 'Return in %'],
      [ 9.87,      6.53]
    ]);

    var options = {
      title: 'Risk vs. Return with 0% Hedge Fund',
      hAxis: {title: 'Risk', minValue: 5, maxValue: 10},
      vAxis: {title: 'Return', minValue: 5, maxValue: 10},
      width:400,
      height:300
    };

    var container = new google.visualization.ScatterChart(document.getElementById('0risk_chart_div'));
    var chart = new google.visualization.ScatterChart(container);


    // Wait for the chart to finish drawing before calling the getImageURI() method.

        google.visualization.events.addListener(chart, 'ready', function () {
            var layout = chart.getChartLayoutInterface();

            container.innerHTML = '<img src="' + chart.getImageURI() + '">';

            for (var i = 0; i < data.getNumberOfRows(); i++) {

            // add image above in every element

                var xPos = layout.getXLocation(data.getValue(i, 0));
                var yPos = layout.getYLocation(data.getValue(i, 1));

                var whiteHat = container.appendChild(document.createElement('img'));
                whiteHat.src = 'http://findicons.com/files/icons/512/star_wars/16/clone_old.png';
                whiteHat.className = 'whiteHat';

                // 16x16 (image size in this example)
                whiteHat.style.top = (yPos - 16) + 'px';
                whiteHat.style.left = (xPos) + 'px';

            }

            console.log(container.innerHTML);
        });



    chart.draw(data, options);
  }

风格

.whiteHat {
  border: none;
  position: absolute;
}

身体

<div id="0risk_chart_div"></div>

【讨论】:

  • 从 for 循环中移除 if (i === 0) { },这将只允许你一个 img 并停止。
  • 删除它不会修复它,但拥有它会使其损坏。
  • 有什么解决方法的建议吗?
  • 第 22 行错误。容器应该是 div 元素而不是图形本身的实例。 var container = document.getElementById('0risk_chart_div'); var chart = new google.visualization.ScatterChart(container);
  • 是的,基本上:var container = document.getElementById('0risk_chart_div'); var chart = new google.visualization.ScatterChart(container); 有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多