如何在JavaScript中使用Google图表将X轴点转换为Y轴

iv

我正在尝试为我的项目绘制图表,以x轴上的压力作为y测量深度,压力与测量深度, 用google chart绘制了错误的图,如何在图中交换x和y轴点的值,谁能帮助我们。我希望这样的输出下面我已经发布了我尝试过的代码

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

    <script>
        let jsonData = {
            "result": {
                "abcData": [
                    {
                        "measuredepth": 0,
                        "pressure": 2500,
                    }, {
                        "measuredepth": 0,
                        "pressure": 2492,
                    },
                    {
                        "measuredepth": 4450,
                        "pressure": 3259
                    },
                    {
                        "measuredepth": 4500,
                        "pressure": 3273
                    }]
            }
        }


        google.charts.load('current', {
            packages: ['corechart']
        }).then(function () {
            var data = new google.visualization.DataTable();
            data.addColumn('number', 'md');
            // data.addColumn('number', 'CT');
            data.addColumn('number', 'WELL');

            for (let i = 0; i < jsonData.result.abcData.length; i++) {
                debugger;
                data.addRows([[jsonData.result.abcData[i].measuredepth, jsonData.result.abcData[i].pressure]]);
            }

            var options = {
                title: 'GRaph-data',
                width: 900,
                height: 500,
                chartArea: {
                    top: 100
                },
                vAxis: {
                    direction: 0
                }
            };

            var chart = new google.visualization.LineChart(document.getElementById('line_top_x'));
            //chart.draw(data, options);
            google.visualization.events.addListener(chart, 'ready', function () {
                var chartLayout = chart.getChartLayoutInterface();
                var chartBounds = chartLayout.getChartAreaBoundingBox();
                var labels = chart.getContainer().getElementsByTagName('text');
                var fontSize;
                var yCoord;
                Array.prototype.forEach.call(labels, function (label) {
                    fontSize = parseFloat(label.getAttribute('font-size'));
                    switch (label.getAttribute('text-anchor')) {
                        // chart title
                        case 'start':
                            yCoord = parseFloat(label.getAttribute('y'));
                            label.setAttribute('y', yCoord - fontSize);
                            break;

                        // x-axis labels
                        case 'middle':
                            label.setAttribute('y', chartBounds.top - (fontSize / 2));
                            break;

                        // y-axis labels
                        default:
                        // ignore
                    }
                });
            });

            chart.draw(data, options);
        }
        );
    </script>
</head>

<body>
    <div id="line_top_x"></div>
</body>

</html>
白帽

在Google图表中,x轴始终是数据表中的第一列。
如果要将压力作为x轴,则只需在添加行时交换值的顺序即可。
首先施加压力...

data.addRows([[jsonData.result.abcData[i].pressure, jsonData.result.abcData[i].measuredepth]]);

另外,如果您不希望Google猜测用于X轴的标签,则
可以添加自己的刻度。

在这里,我们动态地构建...

  var ticks = [];
  var range = data.getColumnRange(0);
  for (var i = 0; i <= range.max; i=i+1000) {
    ticks.push(i);
  }
  ticks.push(i);

  var options = {
    ...
    hAxis: {
      ticks: ticks
    },
    ...
  };

您显然也可以硬编码...

    hAxis: {
      ticks: [0, 1000, 2000, 3000, 4000]
    },

注意:如果加载时数据不正确,则
在绘制之前您需要按x轴对数据表进行排序...

  data.sort([{column: 0}]);

请参阅以下工作片段...

let jsonData = {
  "result": {
      "abcData": [
          {
              "measuredepth": 0,
              "pressure": 2500,
          }, {
              "measuredepth": 0,
              "pressure": 2492,
          },
          {
              "measuredepth": 4450,
              "pressure": 3259
          },
          {
              "measuredepth": 4500,
              "pressure": 3273
          }]
  }
}


google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = new google.visualization.DataTable();
  data.addColumn('number', 'md');
  // data.addColumn('number', 'CT');
  data.addColumn('number', 'WELL');

  for (let i = 0; i < jsonData.result.abcData.length; i++) {
    data.addRows([[jsonData.result.abcData[i].pressure, jsonData.result.abcData[i].measuredepth]]);
  }
  data.sort([{column: 0}]);
  
  var ticks = [];
  var range = data.getColumnRange(0);
  for (var i = 0; i <= range.max; i=i+1000) {
    ticks.push(i);
  }
  ticks.push(i);

  var options = {
    title: 'GRaph-data',
    width: 900,
    height: 500,
    chartArea: {
      top: 100
    },
    hAxis: {
      ticks: ticks
    },
    vAxis: {
      direction: 0
    },
    pointSize: 4
  };

  var chart = new google.visualization.LineChart(document.getElementById('line_top_x'));
  
  google.visualization.events.addListener(chart, 'ready', function () {
    var chartLayout = chart.getChartLayoutInterface();
    var chartBounds = chartLayout.getChartAreaBoundingBox();
    var labels = chart.getContainer().getElementsByTagName('text');
    var fontSize;
    var yCoord;
    Array.prototype.forEach.call(labels, function (label) {
      fontSize = parseFloat(label.getAttribute('font-size'));
      switch (label.getAttribute('text-anchor')) {
        // chart title
        case 'start':
          yCoord = parseFloat(label.getAttribute('y'));
          label.setAttribute('y', yCoord - fontSize);
          break;

        // x-axis labels
        case 'middle':
          label.setAttribute('y', chartBounds.top - (fontSize / 2));
          break;

        // y-axis labels
        default:
        // ignore
      }
    });
  });

  chart.draw(data, options);
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="line_top_x"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何开始y轴点从Google图表的顶部开始

来自分类Dev

将y轴转换为圆的半径

来自分类Dev

如何在iOS中使用Google图形API在连续轴上显示X轴上的所有值

来自分类Dev

如何使用轴1.4将Java对象转换为XML?

来自分类Dev

将辅助轴用于图表会导致x轴和主要y轴问题(Excel)

来自分类Dev

Google图表-如何在图表的整个宽度上拉伸x轴

来自分类Dev

如何使用两个键将JSON对象转换为JavaScript数组以在Google图表中使用?

来自分类Dev

Google图表y轴颜色

来自分类Dev

如何在Python matplotlib中使用分类变量更改x和y轴刻度?

来自分类Dev

如何在asp.net图表中将序列点显示为X轴标签

来自分类Dev

如何在R中使用Lapply将y轴标签从R图移开

来自分类Dev

如何在R>中使用双Y轴将图例添加到ggplot

来自分类Dev

如何在R中使用seqmtplot配置y轴?

来自分类Dev

如何在R中使用seqmtplot配置y轴?

来自分类Dev

如何在R中使用seqplot配置x轴?

来自分类Dev

如何在 r 中使用 plotly 更改 x 轴布局

来自分类Dev

在双轴高图表中将y轴值转换为百万

来自分类Dev

在matplotlib中使用.subplot时如何添加标题,x轴标签和y轴标签?

来自分类Dev

C#图表中的轴相等(如何在C#图表控件中使轴相等)

来自分类Dev

如何在 OxyPlot 中仅重置 Y 轴/X 轴

来自分类Dev

Javascript Highcharts v3.0.5-如何在使用多个Y轴时隐藏Y轴标题

来自分类Dev

Google表格:在图表中交换X和Y轴

来自分类Dev

如何使用MP图表获取选定的条形x轴名称(将字符串添加到x轴)?

来自分类Dev

如何使用Python Altair将x轴和y轴的交点从0移位到1?

来自分类Dev

如何在X的顶部显示Y轴?

来自分类Dev

Google图表:是否可以将String用于x轴?

来自分类Dev

如何在图表的Y轴上保留更多空白?

来自分类Dev

如何在动态Highcharts图表的y轴上放置图标?

来自分类Dev

如何在Excel图表上创建基于文本的Y轴

Related 相关文章

  1. 1

    如何开始y轴点从Google图表的顶部开始

  2. 2

    将y轴转换为圆的半径

  3. 3

    如何在iOS中使用Google图形API在连续轴上显示X轴上的所有值

  4. 4

    如何使用轴1.4将Java对象转换为XML?

  5. 5

    将辅助轴用于图表会导致x轴和主要y轴问题(Excel)

  6. 6

    Google图表-如何在图表的整个宽度上拉伸x轴

  7. 7

    如何使用两个键将JSON对象转换为JavaScript数组以在Google图表中使用?

  8. 8

    Google图表y轴颜色

  9. 9

    如何在Python matplotlib中使用分类变量更改x和y轴刻度?

  10. 10

    如何在asp.net图表中将序列点显示为X轴标签

  11. 11

    如何在R中使用Lapply将y轴标签从R图移开

  12. 12

    如何在R>中使用双Y轴将图例添加到ggplot

  13. 13

    如何在R中使用seqmtplot配置y轴?

  14. 14

    如何在R中使用seqmtplot配置y轴?

  15. 15

    如何在R中使用seqplot配置x轴?

  16. 16

    如何在 r 中使用 plotly 更改 x 轴布局

  17. 17

    在双轴高图表中将y轴值转换为百万

  18. 18

    在matplotlib中使用.subplot时如何添加标题,x轴标签和y轴标签?

  19. 19

    C#图表中的轴相等(如何在C#图表控件中使轴相等)

  20. 20

    如何在 OxyPlot 中仅重置 Y 轴/X 轴

  21. 21

    Javascript Highcharts v3.0.5-如何在使用多个Y轴时隐藏Y轴标题

  22. 22

    Google表格:在图表中交换X和Y轴

  23. 23

    如何使用MP图表获取选定的条形x轴名称(将字符串添加到x轴)?

  24. 24

    如何使用Python Altair将x轴和y轴的交点从0移位到1?

  25. 25

    如何在X的顶部显示Y轴?

  26. 26

    Google图表:是否可以将String用于x轴?

  27. 27

    如何在图表的Y轴上保留更多空白?

  28. 28

    如何在动态Highcharts图表的y轴上放置图标?

  29. 29

    如何在Excel图表上创建基于文本的Y轴

热门标签

归档