在 Chart.js 中的条形顶部显示值

2024-01-04

请参考这个小提琴:https://jsfiddle.net/4mxhogmd/1/ https://jsfiddle.net/4mxhogmd/1/

我正在研究 Chart.js 如果您在小提琴中看到,您会注意到在某些情况下条形顶部的值未正确显示(超出画布) 在研究时我发现了这个链接如何在 Chart.js 上显示数据值 https://stackoverflow.com/questions/31631354/how-to-display-data-values-on-chart-js

但在这里,他们也使用工具提示来处理条形内部文本调整的相同情况。 我不想要这个。

var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ["2 Jan", "9 Jan", "16 Jan", "23 Jan", "30 Jan", "6 Feb", "13 Feb"],
        datasets: [{
            data: [6, 87, 56, 15, 88, 60, 12],
            backgroundColor: "#4082c4"
        }]
    },
    options: {
        "hover": {
            "animationDuration": 0
        },
        "animation": {
            "duration": 1,
            "onComplete": function () {
                var chartInstance = this.chart,
                ctx = chartInstance.ctx;

                ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
                ctx.textAlign = 'center';
                ctx.textBaseline = 'bottom';

                this.data.datasets.forEach(function (dataset, i) {
                    var meta = chartInstance.controller.getDatasetMeta(i);
                    meta.data.forEach(function (bar, index) {
                        var data = dataset.data[index];                            
                        ctx.fillText(data, bar._model.x, bar._model.y - 5);
                    });
                });
            }
        },
        legend: {
            "display": false
        },
        tooltips: {
            "enabled": false
        },
        scales: {
            yAxes: [{
                display: false,
                gridLines: {
                    display : false
                },
                ticks: {
                    display: false,
                    beginAtZero:true
                }
            }],
            xAxes: [{
                gridLines: {
                    display : false
                },
                ticks: {
                    beginAtZero:true
                }
            }]
        }
    }
});

我想要的是在所有情况下仅在顶部显示价值。


我从 myChart 内部定义的数据中取出数据,这样我就可以从数据集中取出最大值。然后在 yAxes 内部,您可以将最大刻度设置为数据集中的最大值 + 10。这可以确保图表中的顶部条形不会超出画布的边缘并且不会显示其值。

var ctx = document.getElementById("myChart");
debugger;
var data = {
  labels: ["2 Jan", "9 Jan", "16 Jan", "23 Jan", "30 Jan", "6 Feb", "13 Feb"],
  datasets: [{
    data: [150, 87, 56, 50, 88, 60, 45],
    backgroundColor: "#4082c4"
  }]
}
var myChart = new Chart(ctx, {
  type: 'bar',
  data: data,
  options: {
    "hover": {
      "animationDuration": 0
    },
    "animation": {
      "duration": 1,
      "onComplete": function() {
        var chartInstance = this.chart,
          ctx = chartInstance.ctx;

        ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
        ctx.textAlign = 'center';
        ctx.textBaseline = 'bottom';

        this.data.datasets.forEach(function(dataset, i) {
          var meta = chartInstance.controller.getDatasetMeta(i);
          meta.data.forEach(function(bar, index) {
            var data = dataset.data[index];
            ctx.fillText(data, bar._model.x, bar._model.y - 5);
          });
        });
      }
    },
    legend: {
      "display": false
    },
    tooltips: {
      "enabled": false
    },
    scales: {
      yAxes: [{
        display: false,
        gridLines: {
          display: false
        },
        ticks: {
          max: Math.max(...data.datasets[0].data) + 10,
          display: false,
          beginAtZero: true
        }
      }],
      xAxes: [{
        gridLines: {
          display: false
        },
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.bundle.js"></script>
<canvas id="myChart" width="100" height="100"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Chart.js 中的条形顶部显示值 的相关文章

  • chrome 调试器承诺在暂停时不会解析?

    也许我没有正确调试承诺 但基本上 如果您在断点处停止并运行异步代码 它实际上不会完成 直到您恢复执行为止 这是一个问题 调试器允许您快速试验多个 api 方法 但如果您恢复它 您就不能 debugger now type the follo
  • Angular 2 链式 Promise 并传递拒绝

    应该是一个简单的问题 但是我找不到有关如何做到这一点的文档 像这样链接一个承诺 Making a promise no problem let promise new Promise resolve reject gt let data d
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 是否有任何非轮询方式来检测 DOM 元素的大小或位置何时发生变化?

    很长一段时间以来 我一直在寻找一种方法来检测 DOM 元素的大小或位置何时发生变化 这可能是因为窗口调整了大小 或者因为向该元素添加了新的子元素 或者因为在该元素周围添加了新元素 或者因为 CSS 规则已更改 或者因为用户更改了浏览器的字体
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 如何在jquery中获取保存时间和当前时间的差异?

    我想在 javascript 或 jquery 中获取保存时间和当前时间之间的时差 我节省的时间看起来像Sun Oct 24 15 55 56 GMT 05 30 2010 java中的日期格式代码如下 String newDate 201
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • 多核汇编语言是什么样的?

    例如 曾几何时 要编写 x86 汇编程序 您可能会收到这样的指令 将值 5 加载到 EDX 寄存器 递增 EDX 寄存器等 对于具有 4 个核心 甚至更多 的现代 CPU 在机器代码级别看起来是否只是有 4 个独立的 CPU 即只有 4 个
  • 如何使用 tc 和 cgroup 确定数据包的优先级

    我试图对某个进程组生成的数据包进行优先级排序 以便首先选择它们从 PC 传输 我的目标是通过使用 cgroups 和 tc 来做到这一点 但它似乎不起作用 首先我在ubuntu上设置cgroups如下 modprobe cls cgroup
  • Ember.js 如何同时显示两条路由

    我在网站上展示了一个产品 就像这样 products 1 用户可以同时打开一个页面 该页面将显示在产品的顶部 就像覆盖层一样 比产品页面小一点 这样你就可以看到它背后的一些产品 我认为网址应该是 products 1 page 1 这样用户
  • 内核模式下的线程本地存储?

    Windows 确切地说是 Win32 中的内核模式驱动程序是否有等效的线程本地存储 TLS 我试图实现的目标 最终 从我的驱动程序的调度例程中 它可能会调用许多其他函数 可能有一个深层调用堆栈 我想提供一些特定于正在处理的请求的上下文信息
  • Sitecore Analytics 机器人 SessionTimeout 导致会话过早超时

    在我们的一个项目中 我们遇到了随机会话超时问题 通过最近的发现 我注意到 Sitecore Analytics Robots SessionTimeout 可能是导致它的原因 我们注意到 在随机会话超时时 超时值设置为 1 分钟 而不是我们
  • Golang 构建随机约束

    我有两个 go 文件 标头中具有不同的构建约束 常量 生产 go build production staging package main const URL production 常量 staging go build staging
  • `BehaviorSubject` 和 `Sink` 之间有什么关系吗?和`StreamController`?

    通过阅读 abin的回答Flutter中Sink和Stream有什么区别 https stackoverflow com questions 50350235 我已经理解了之间的关系Sink and Stream 除此之外 还有什么关系Be
  • 如何将新数据附加到属性文件中的现有数据?

    我正在使用以下代码将数据写入属性文件 public void WritePropertiesFile String key String data Properties configProperty new Properties confi
  • JavaScript 路由正则表达式

    我需要构建一个路由器 将 REST 请求路由到正确的控制器和操作 这里有一些例子 POST users GET users uid GET users search q lol GET users GET users uid picture
  • 从 PHP Curl 获取 POST Zapier Webhook 响应

    我正在使用 Zapier Webhooks 来集成 Web 门户和 API 门户网站和 API 都是使用 php 开发的 我正在使用curl向Zapier中的catch hook发送请求 发送发布数据 然后在我的 zap 中 第二步获取捕获
  • 使用 msmq 进行异步日志记录

    我需要在我们的应用程序中进行日志记录 并希望尽可能少地保留因日志记录而消耗的时间 我正在考虑使用 MSMQ 以便应用程序登录到 MSMQ 然后我可以将消息从 MSMQ 异步记录到数据库 文件 这个想法在性能方面好吗 或者使用 log4net
  • 如何执行命令提示符并从中获取输出?

    我是Python的新手 我想编写一个Python程序 可以在cmd中执行一些命令并自动从中获取输出 是否可以 我怎样才能做到这一点 你会想要使用subprocess Popen https docs python org 3 4 libra
  • 使用 Jest 模拟的服务会导致“不允许 jest.mock() 的模块工厂引用任何超出范围的变量”错误

    我正在尝试模拟对服务的调用 但我正在努力处理以下消息 模组厂jest mock 不允许引用任何超出范围的变量 我正在使用 babel 和 ES6 语法 笑话和酶 我有一个简单的组件叫做Vocabulary它得到一个列表VocabularyE
  • Lambda 不会触发 SNS 事件。将 AWS lambda 与 SNS 链接起来

    我使用 AWS 将 lambda 链接在一起 方法是让第二个 lambda 订阅第一个 lambda 的 SNS feed 第二个 lambda 没有从第一个 lambda 接收任何内容 并且我在 CloudWatch 或我订阅的个人电子邮
  • 是否可以在 Vista 上构建 exe 并使用 py2exe 在 XP 上部署

    我在 Windows Vista 上使用 python 创建了一些程序 但我想将它部署在 Windows XP 上 是否有必要在Windows XP上进行新的构建 或者是否有可能构建在这两个系统上都可以运行的版本 编辑 编辑2 非常简单的程
  • 在 DataSources.groovy 中扩展多个 grails 数据源?

    您定义的每个环境DataSource groovy扩展基础dataSource定义位于文件根部 环境之外 我有两个特定的配置 需要将它们应用于许多不同的环境 这些环境具有较小的特定于环境的更改 实际上 我需要两个 基本定义 或者某种方式来扩
  • Tortoise-ORM:如何从 tortoise.contrib.postgres.fields 查询 Postgres `ArrayField`

    刚刚创建了一个 PostgresArrayField在 Tortoise ORM 中通过from tortoise contrib postgres fields import ArrayField托管一些我想放置的标签 查看我的 Post
  • .ps1 脚本在 .bat 文件脚本中报告为“缺少结束符 '}'”

    我在将简短的 PowerShell 脚本转换为 cmd exe bat 文件脚本时遇到困难 错误消息 见下文 抱怨 缺少结束 ps1 脚本按预期成功运行 我在赋值语句末尾使用了分号字符 我用脱字符号 转义了垂直线 竖线 字符 我缺少什么 这
  • 片段不会启动

    我有 onclicklistener 可以工作 我正在尝试通过单击列表视图上的按钮启动一个新片段 目前 该片段尚未启动 但是 我们使用的模拟器不会崩溃 因此如果我们正确理解这一点 它就不会连接到新的片段 XML 页面 public void
  • 在 Chart.js 中的条形顶部显示值

    请参考这个小提琴 https jsfiddle net 4mxhogmd 1 https jsfiddle net 4mxhogmd 1 我正在研究 Chart js 如果您在小提琴中看到 您会注意到在某些情况下条形顶部的值未正确显示 超出