使时间序列在轴上显示最后一个日期?

2024-03-09

所以在 Chart.js 中我有一个基于日期范围的时间序列。该图表无法将所有日期显示为轴标签,因此它显示了合理的选择。它始终在左侧显示第一个日期,但并不总是在轴的右端显示最后一个日期。

例如,我的日期范围可以是从 1 月 1 日到 7 月 30 日的每一天。该轴将从 1 月 1 日开始,但结束日期可能是 7 月 27 日、28 日或 29 日。

对我来说,结束日期比开始日期更重要。有没有一种方法可以可靠地显示最后日期并让开始日期成为变化的日​​期?


这可以通过实施您自己的解决方案来解决ticks.maxTicksLimit https://www.chartjs.org/docs/latest/axes/cartesian/linear.html#tick-configuration-options on the xAxis。您必须按如下方式进行。

  1. 定义xAxis as a 时间笛卡尔轴 https://www.chartjs.org/docs/latest/axes/cartesian/time.html接受data作为一个数组数据点 https://www.chartjs.org/docs/latest/charts/line.html#point使用包含的对象x and y属性各有。
  2. 生成一个labels数据中包含的日期数组。该数组应包含开始日期和结束日期以及两者之间均匀分布的天数(请参阅函数createLabels在下面的代码片段中)。
  3. 告诉 Chart.js 生成ticks on the xAxis通过定义给定标签tick.sources: 'labels' https://www.chartjs.org/docs/latest/axes/cartesian/time.html#ticks-source.
const data = [];
let date = Date.parse('2020-01-01');
for (let day = 1; day <= 31; day++) {
  date = new Date(date);
  date.setDate(day);
  data.push({
    x: date,
    y: Math.floor((Math.random() * 6) + 1)
  })
};

const maxTicksLimit = 8;
function createLabels() {
  const days = data.map(o => o.x);
  const startTime = days[0];
  const endTime = days[days.length - 1];
  const tickGap = data.length / (maxTicksLimit - 1);
  const labels = [startTime];
  for (let i = 1; i < maxTicksLimit - 1; i++) {
    labels.push(days[Math.floor(i * tickGap)]);
  }
  labels.push(endTime);
  return labels;
}

new Chart('myChart', {
  type: 'line',
  data: {
    labels: createLabels(),
    datasets: [{
      label: 'My Dataset',
      fill: false,
      data: data,
      borderColor: 'blue'
    }]
  },
  options: {
    scales: {
      xAxes: [{
        type: 'time',
        time: {
          unit: 'day'
        },
        ticks: {
          source: 'labels'
        }      
      }],
      yAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.min.js"></script>
<canvas id="myChart" height="90"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使时间序列在轴上显示最后一个日期? 的相关文章

  • 如何从 javascript 数组本身向图表 js 添加数据?

    我想用chart js http www chartjs org docs 在数据结构数据中 如果我给出的数字为 data 40 80 5 190 56 55 40 工作正常 如果我给出一个数组变量或字符串变量来保存该数字 例如 var m
  • Chart.js 上的悬停模式

    当您未将鼠标悬停在折线图中的特定 点 上时 是否可以激活悬停 I want that每当我将鼠标悬停在图表的任何部分上时就会激活特定的工具提示 Edit 像这样的东西http watchstocks herokuapp com http w
  • Chartjs 示例无法重现

    我希望从 Chartjs 文档中重现此示例的结果 https www chartjs org docs latest samples scales time line html https www chartjs org docs late
  • Chartjs 气泡图中的各个气泡可以有标签吗?

    我正在使用 Chartjs 创建气泡图 我能够创建描述每个气泡的工具提示 但我的图表的用户可能无法将鼠标悬停在其上以查看工具提示 BubbleData 对象格式不包含标签元素 无论如何我都放了一个 不走运 我尝试过图表数据对象的 标签 元素
  • 如何增加标签和图表区域之间的空间?

    我所有的标签都在栏的顶部 我可以看到这个 but I want that would be like this 填充不适用于税费 但适用于税费 legend display false scales xAxes position top s
  • 当鼠标悬停时,Chartjs 显示标签和单位统计

    当我的鼠标指针悬停在图表上时是否可以显示标签和单位 目前只有数字 对于下面的例子 我想展示 58 标签1 0 标签2 0 标签3 0 标签4 0 标签5 我的选项如下所示 var options Boolean Show a backdro
  • Chart JS:忽略 x 值并将点数据放在第一个可用标签上

    我正在 Chart js 中制作折线图 并且遇到一个问题 我试图在线上绘制点数据 但它忽略了我给出的 x 值 而是将它们放在第一个可用标签上 this myLineChart new Chart this ctx type line dat
  • 如何为 Chart.js (chartjs.org) 中的所有图表类型添加标签/图例?

    Chart js 的文档提到了 图例模板 但没有提供此类图例的资源或示例 这些如何显示呢 您可以在图表选项中包含图例模板 legendTemplate takes a template as a string you can populat
  • Chart.js 时间序列跳过几天

    我有一个非常简单的条形图 其中每个数据点由日期 天 和数字组成 也许唯一的特点是并非涵盖每个日期 即有些日子没有数据点 绘制图表时 仅显示那些具有与其关联的数据点的日期 所有其他日期都被简单地省略 因此 x 轴分布不均匀并且会跳过值 如何确
  • ChartJS 如何设置X轴的最大标签?

    我从数组接收图表数据 其中存储了从 2016 年 1 月到 2018 年 12 月的日期 在图表中 它显示 3 年的所有月份 但我只需要展示1年 有任何想法吗 在这里 我传递一个数组并更改月份的单位 还有显示格式 chartHour con
  • 使用按钮在 Chart.js 中切换图表

    我是一名初学者开发人员 我一直在尝试使用 ChartJS 将一些数据显示到屏幕上 我希望能够单击一个按钮来生成另一组新的数据 轴 我一直在尝试遵循其他堆栈溢出答案 但似乎没有一个对我有用 请参见下文
  • 将 FirestoreCollection 转换为数组?

    我在将 Firestore 数据转换为 Chart js 图表的数组时遇到困难 从 Firestore 获取数据 fetchData Get data this updatesCollection this afs collection p
  • Chart.js 中未显示折线图

    问题很严重 我看不到图表的线条 当我按下任何按钮时 X 轴的时间应该根据按下的按钮而相应地变化我已经浏览文档很长一段时间了 但仍然无法弄清楚 图表数据 import React useRef useEffect useState from
  • Chart.js 将标签变成链接

    我不确定如果不做以下事情是否可能 在 HTML 画布中创建链接 https stackoverflow com questions 6215841 create links in html canvas但让我们确定一下 有没有一种方法 相对
  • 如何在React ChartJS中获取填充圆图?

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

    我很难使 y 轴上的标签响应 我希望标签移动到多行 并在空间不足时具有响应式字体大小 我正在使用 Chart js 数据标签库进行标签在水平条形图的顶部 由于外部图表容器 标签也被隐藏 var chart new Chart ctx typ
  • Chart.js 刻度线和 X 轴之间的空间

    我正在使用 Chart js 版本 3 x 制作一个简单的画布 它只是显示价格的演变 X 轴用于时间 Y 轴用于进化百分比 我已经成功做到了这一点 但现在 我想添加一些风格 我的目标是在标记刻度和 X 轴之间添加一些空间 我用过chart
  • 如何在 Chart.js 中将 Y 轴值从数字更改为字符串?

    我在用Chart js http www chartjs org 我正在尝试更改 y 轴 请参见下面的屏幕截图 我尝试填写yLabels具有字符串数组的属性 但这没有用 任何帮助 将不胜感激 jQuery document ready fu
  • Chart.js:将堆叠条形图的工具提示放置在条形图的顶部

    当我在简单的条形图中有一个条形时 工具提示位于条形的顶部 如果我将鼠标悬停在堆积条形图上 工具提示将放置在average位置 我希望将工具提示始终放在堆叠条形图的顶部 就像简单条形图一样 而不是这种行为 配置位置的唯一两个选项是averag
  • 如何将小时和分钟数据输入到 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 代表时间 包括小时和分钟 我这样

随机推荐