带有 Chart.js 的笛卡尔坐标系

2024-02-20

我正在尝试使用 Chart.js 创建一个笛卡尔坐标系(即坐标几何)。该文档实际上指出了“笛卡尔轴”,但我没有看到任何证据表明这样的名称是有道理的。我的图表如下:

    <canvas id="myChart" width="400" height="400"></canvas>
    <script>
    var ctx = document.getElementById('myChart').getContext('2d');
    var scatterChart = new Chart(ctx, {
      type: 'scatter',
      data: {
        datasets: [{
            label: 'Scatter Dataset',
            data: [{x:-3,y:5},{x:-2,y:0},{x:-1,y:-3},{x:0,y:-4},{x:1,y:-3},
            {x:2,y:0},{x:3,y:5}]
        }]
      },
      options: {
        scales: {
          xAxes: [{
              type: 'linear',
          ticks: {
            stepSize: 1
          }
          }],yAxes: [{
              type: 'linear',
          ticks: {
            stepSize: 1
          }
          }]
        }
      }
    });
    </script>

现在的问题是轴没有穿过原点 (0,0)。它们像任何其他普通图表一样放在一边。有谁知道如何移动轴吗?

我尝试设置轴的位置,但唯一的选项是“顶部”、“底部”、“左”和“右”。没有“中间”、“中心”、“原点”等。我也尝试设置标签偏移量,但这不会沿正确的方向移动(x 标签沿 x 方向移动,y 标签沿 y 方向移动 - I需要相反),这只是移动标签。


您可以使用插件核心API https://www.chartjs.org/docs/latest/developers/plugins.html#plugin-core-api它提供了一系列可用于执行自定义代码的挂钩。在里面beforeDraw例如,您可以计算并设置ticks.padding https://www.chartjs.org/docs/latest/axes/styling.html#tick-configuration两个轴以便移动ticks到所需位置。

beforeDraw: chart => {
  var xAxis = chart.scales['x-axis-1'];
  var yAxis = chart.scales['y-axis-1'];
  const scales = chart.chart.config.options.scales;
  scales.xAxes[0].ticks.padding = yAxis.top - yAxis.getPixelForValue(0) + 6;
  scales.yAxes[0].ticks.padding = xAxis.getPixelForValue(0) - xAxis.right + 6;
}

请查看您修改后的代码,看看它是如何工作的。

new Chart('myChart', {
  type: 'scatter',
  plugins:[{
    beforeDraw: chart => {
      var xAxis = chart.scales['x-axis-1'];
      var yAxis = chart.scales['y-axis-1'];
      const scales = chart.chart.config.options.scales;
      scales.xAxes[0].ticks.padding = yAxis.top - yAxis.getPixelForValue(0) + 6;
      scales.yAxes[0].ticks.padding = xAxis.getPixelForValue(0) - xAxis.right + 6;
    }
  }],
  data: {
    datasets: [{
      label: 'Scatter Dataset',
      data: [{x:-3,y:5},{x:-2,y:0},{x:-1,y:-3},{x:0,y:-4},{x:1,y:-3},{x:2,y:0},{x:3,y:5}],
      borderColor: 'red'
    }]
  },
  options: {
    scales: {
      xAxes: [{
        ticks: {
          min: -6,
          max: 6,
          stepSize: 1,
          callback: v => v == 0 ? '' : v
        },
        gridLines: {
          drawTicks: false
        }        
      }],
      yAxes: [{
        ticks: {
          min: -6,
          max: 6,
          stepSize: 1,
          callback: v => v == 0 ? '' : v
        },
        gridLines: {
          drawTicks: false
        } 
      }]
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<canvas id="myChart" width="400" height="400"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 Chart.js 的笛卡尔坐标系 的相关文章

  • 如何移动 Chart.js 饼图上的标签位置

    我正在使用 Chart js 并且尝试将饼图上的标签移到饼图区域之外 请参见红色 X 这是我现在的代码 div class container h4 class title Title h4 div
  • matplotlib imshow 编辑 x 轴

    我想显示图像的幅度谱 我可以使用以下代码来做到这一点 import numpy as np import matplotlib pyplot as plt import pylab pylab gray pic pylab imread C
  • d3 不均匀分布缩放

    关于绘制值之间间距不等的轴的任何建议 例如 我目前正在使用以下方法绘制轴 yScale d3 scale linear domain 0 60000 range height 0 我需要 0 到 5000 之间更大的间距 而不是平均分配所有
  • 为什么在绘制 API 中,origin 通常位于左上角,而逻辑上本机 GL 位于左下角?

    我注意到很多绘图 API 的 0 0 原点位于左上角 因此 y 实际上随着增加而下降 我想知道这是为什么 不工作在我个人认为更符合逻辑的左下角 常规 x y 网格的原点 也恰好是硬件渲染 API 中坐标的本机表示 有什么特别的优势吗 或者它
  • 如何在React ChartJS中获取填充圆图?

    我想介绍一个填充圆图 气泡图的变体 仅包含半径作为其尺寸 React Chartjs乃至Chartjs仅支持气泡图 不支持圆形图 这是我想要添加的预期图表的示例 我可以使用这样的东西吗react chartjs 例如 需要执行如下操作来定期
  • 如何在多行字符中只显示一个标签?

    我使用 Chart js 创建一个图表 该图有两条线 因此它默认也显示两个标签 但我需要一种配置 其中应该显示红色标签 而应该隐藏蓝色标签 标签not线 感谢您的帮助 var config type line data labels 16
  • 如何找到距离原点最近的坐标?

    我知道有很多关于按多个值对 javascript 数组进行排序的问题 但没有一个答案解决了我的问题 我有一个坐标数组 例如 x y 10 20 12 18 20 30 5 40 100 2 如何获取距离原点最近的坐标 使用以下方法计算每个点
  • 如何禁用 d3 对数刻度中的小刻度?

    我的实时 d3 对数刻度图如下所示 我只想显示主要刻度及其标签 10 2 10 1 10 0 10 1 10 2 but 不是小蜱虫 我希望日志 Y 轴看起来像这样 没有小刻度 我怎样才能做到这一点 EDIT 发布一些代码 svg d3 s
  • 在 Firefox 扩展中,moment.js 不会在 Chart.js 之前加载

    我正在将 Chrome 扩展移植到 Firefox 它将 Chartjs 图表添加到页面中 它需要 moment js 并且在 Chrome 上运行得很好 但是 当我将其移植到 Firefox 时 图表无法加载 并且出现错误 错误 Char
  • d3.js 和 Chart.js 之间的比较(仅适用于图表)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在项目中多次使用过 Chart js 但从未使用过 d3 js 很多人说 d3 js 是最好的图表 javascript 框架 但没
  • 使用 ChartJS v2.0 自定义图例

    我正在尝试在 ChartJS v2 0 中创建自定义图例模板 在 ChartJS v1 中 我只是向新的 Chart 构造函数添加了一个属性 例如 legendTemplate ul li span style background col
  • Chart.js 没有显示在我的视图中

    我有一个使用 angular js 运行的应用程序 我的视图之一应该加载图表 我正在使用 Chart js 但由于某种原因它不起作用 并且我的控制台上没有显示错误 这是我创建图表的函数 scope writeBatteryChart fun
  • Matplotlib:生成具有不同和倒置比例的多个双轴

    我想在两个 x 和 y 轴上绘制一个数据系列 以便有 4 个不同的轴 首先是 x 以 eV 为单位的能量 与 y 归一化计数 轴 然后是 x 与能量成反比的波长 与 y 计数 轴 我的代码是 import numpy as np impor
  • vue-chartjs 反应数据错误

    我正在尝试使用反应式数据混合vue chartjs http vue chartjs org home id reactive data 用于设置初始数据的已安装函数正在运行 我可以使用 API 响应正确查看图表 fetchSessionT
  • 如何将小时和分钟数据输入到 ChartJS 中

    我正在尝试使用 Chart js 制作折线图 我的数据的形式为 var result x 18 00 y 230 x 19 00 y 232 x 20 00 y 236 x 22 00 y 228 其中 x 代表时间 包括小时和分钟 我这样
  • 如何使用 Chart.js 版本 3.2.1 在圆环图中添加文本

    我正在使用 Canvas 在 HTML 中使用 如何使用在圆环图中添加文本 这是我的 javascript 代码和 HTML 代码 我使用了图表js版本3 2 1 所以请给出相同版本 3 的解决方案 var overallStatsCanv
  • Chart.js 点击标签,使用条形图

    我需要有关 Chart js 交互性的帮助 当我单击标签时 我需要返回我单击的列 索引 号 我尝试使用 getElementsAtEvent 但只有当我直接单击图表时它才有效 This http jsfiddle net yxz2sjam
  • 如何在 Chart.js 2 中设置轴的步长?

    我使用带有 3 个 Y 轴的 Chart js 创建了一个简单的折线图 https codepen io anon pen dZVgKw https codepen io anon pen dZVgKw 正如您所看到的 最后一个从 10 到
  • 在 Chart.js 的工具提示中显示自定义数据集属性

    在饼图工具提示中显示自定义属性的最简单方法是什么 var pieData value 40 color F7464A highlight FF5A5E label Label 1 description This is a descript
  • 使用chart.js 的年龄金字塔图

    我正在尝试使用 Chart js 创建一个图表 如下所示 例如 https thebreadoflifeblog files wordpress com 2013 01 uk age pyramid png https thebreadof

随机推荐