使用 Chart.js 绘制条形图的 X 轴多色标签

2024-02-21

我需要不同颜色的 x 轴标签,我使用“chart.js”。我尝试了下面的代码,但它不起作用,只显示单色 -

scales: {
  xAxes: [{    
    ticks: {
      fontColor: [
        'rgba(245,88,97,1)',
        'rgba(245,88,97,1)',
        'rgba(245,88,97,1)',
        'rgba(145,151,163,1)',
        'rgba(70,180,220,1)',
        'rgba(70,180,220,1)',
        'rgba(70,180,220,1)'
      ]
    }
  }]
}

Output:

Need: enter image description here


您可以使用插件核心API https://www.chartjs.org/docs/latest/developers/plugins.html#plugin-core-api。它提供了可用于执行自定义代码的不同挂钩。在下面的代码片段中,我使用afterDraw钩到绘制文字 https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillText与相应条的颜色相同。

chart.data.labels.forEach((l, i) => {
  var value = chart.data.datasets[0].data[i];
  var x = xAxis.getPixelForValue(l);        
  ctx.fillStyle = chart.data.datasets[0].backgroundColor[i];
  ctx.fillText(l, x, yAxis.bottom + 17);
});

当绘制自己的刻度标签时,您需要指示 Chart.js 不要显示默认标签。这可以通过图表选项中的以下定义来完成。

scales: {
  xAxes: [{
    ticks: {
      display: false
    }
  }], 

您还需要为图表底部定义一些填充,否则您将看不到自定义刻度标签。

layout: {
  padding: {
    bottom: 20
  }
},

请查看以下示例代码,该代码说明了如何根据值更改 x 轴上的标签。

new Chart('myChart', {
  type: 'bar',
  plugins: [{
    afterDraw: chart => {
      var ctx = chart.chart.ctx;
      var xAxis = chart.scales['x-axis-0'];
      var yAxis = chart.scales['y-axis-0'];
      ctx.save();
      ctx.textAlign = 'center';
      ctx.font = '12px Arial';
      chart.data.labels.forEach((l, i) => {
        var value = chart.data.datasets[0].data[i];
        var x = xAxis.getPixelForValue(l);        
        ctx.fillStyle = chart.data.datasets[0].backgroundColor[i];
        ctx.fillText(l, x, yAxis.bottom + 17);
      });
      ctx.restore();
    }
  }],
  data: {
    labels: ["-3", "-2", "-1", "0", "+1", "+2", "+3"],
    datasets: [{
      label: "My First Dataset",
      data: [60, 59, 80, 81, 60, 55, 40],
      fill: false,
      backgroundColor: ['rgba(245,88,97,1)', 'rgba(245,88,97,1)', 'rgba(245,88,97,1)',     'rgba(145,151,163,1)', 'rgba(70,180,220,1)', 'rgba(70,180,220,1)', 'rgba(70,180,220,1)'],
      borderWidth: 1
    }]
  },
  options: {
    layout: {
      padding: {
        bottom: 20
      }
    },
    scales: {
      xAxes: [{
        ticks: {
          display: false
        }
      }],
      yAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});
canvas {
  max-width: 300px
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
<canvas id="myChart" height="200"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Chart.js 绘制条形图的 X 轴多色标签 的相关文章

  • “-webkit-text-fill-color”和“颜色”之间的区别?

    我试图理解之间的区别 webkit text fill color只是简单地color 功能上有什么区别吗 据我所知 它们是完全相同的 有什么事情你可以用其中一个来做 而另一个却不能做吗 来自WebKit 博客 http www webki
  • R 编程:创建堆叠条形图,每个堆叠条形具有可变颜色

    我正在尝试创建一个堆叠条形图 每个堆叠条形图中的颜色可变 也就是说 一个条形图在红色上方显示蓝色 下一个条形图在紫色上方显示红色 等等 我还想保留堆叠图表的功能 十分感谢大家 Adam 下图 使用上面的代码创建 显示了主要汽车制造商生产的汽
  • 使用 R 中绘制的标准误差创建条形图

    我试图找到在 R 中创建条形图并显示标准错误的最佳方法 我看过其他文章 但我无法弄清楚与我自己的数据一起使用的代码 之前没有使用过 ggplot 这似乎是最常用的方法 而 barplot 不与数据框合作 我需要在两种情况下使用它 我为此创建
  • 覆盖按钮的文本颜色不起作用

    我使用每个按钮上的buttonBarStyle 和布局上的buttonBarButtonStyle 为按钮栏创建了一个自定义主题 它工作正常 但我想更改按钮的文本颜色 但它仍然采用默认颜色 android color primary tex
  • 使用chartJS显示带有连接点的折线图

    我想使用 ChartJS 绘制这样的图表 但我找不到连接第一个和最后一个点并在该连接区域内显示单个唯一点的解决方案 我还需要用不同的颜色设置每个点的样式 我尝试探索 ChartJS 文档但找不到解决方案 是否有任何图表绘制库具有这些功能或如
  • 如何制作 HTML/CSS/JS 变色背景(如 Kahoot.it 那样)

    如何使用 html 和 css 以及可能的 javascript 制作类似于 waht 的颜色变化 褪色背景https kahoot it https kahoot it has 你应该学会检查和获取 keyframes bgcolor 0
  • 删除绘图轴值

    我只是想知道是否有一种方法可以消除 r 图中的轴值 分别是 x 轴或 y 轴 我知道axes false将摆脱整个轴 但我只想摆脱编号 删除 x 轴或 y 轴上的编号 plot 1 10 xaxt n plot 1 10 yaxt n 如果
  • 每个刻度标签都有不同的颜色

    我正在尝试使用 matplotlib python 3 5 创建一个散点图 其中 x 轴上的每个刻度都有不同的颜色 这怎么可能 例如 假设 x 刻度为 Mo Tu We Th Fr Sa Su 现在我希望 Mo 是绿色的 Tu 是蓝色的 等
  • 双向条形图,两侧带有正标签ggplot2

    我尝试在 ggplot 中创建一个双向条形图 其中轴上方和下方的轴标签和数据标签均为正值 例如 如果您的数据是 myData lt data frame category c yes yes no no month c Jan Feb Ja
  • Python:按条件绘制多个正/负条形图

    这是我第一次用 python 绘制条形图 我的 df 操作 key descript score 0 noodles taste 5 1 noodles color 2 2 noodles health 3 3 apple color 7
  • 预乘 Alpha 合成

    我正在尝试实现预乘阿尔法混合 在本页 什么是颜色混合 https learn microsoft com en us previous versions windows xna bb976070 v xnagamestudio 41 它们确
  • 生成 n 色彩虹调色板

    我正在尝试用 可运行的代码在这里 http sketchpad cc XEXd5II9nC size 360 100 colorMode HSB 360 100 100 Hue in degrees in 0 360 saturation
  • 在两种颜色之间进行插值的最有效方法是什么? (预计有伪代码和按位运算)

    制作一个黑莓应用程序 想要一个渐变类 插入两种颜色的最有效方法 例如速度和电池寿命 是什么 请具体说明 Java of course int c1 0xFFAA0055 color 1 ARGB int c2 0xFF00CCFF colo
  • Alpha 混合红色、蓝色和绿色图像以生成着色为任何 RGB 值的图像?

    基本上 我有一个上下文 我无法以编程方式对图像进行着色 尽管我可以更改它的 alpha 值 通过一些实验 我发现我可以使用特定的 alpha 值对图像的红色 蓝色和绿色版本进行分层 以产生各种颜色 但是我想知道是否可以通过这种方法实现真正
  • 使用 scikit-image 在 HSV 中进行颜色旋转

    目的是将纯红色图像转换为色轮的任何色调 A monochrome image is first converted into a RGB red image ex 然后转化为HSV 通过添加一个角度值来修改色调分量 与车轮颜色相匹配 然后将
  • ChartJs:如何按时间值(而不是像素)以编程方式平移

    我使用的是chartJs 3 6 1 和 Chartjs plugin zoom 1 2 1 但我认为这并不重要 我有 2 个时间序列折线图 当我通过拖放平移一个图表时 我也想移动 平移另一个图表 为此 我为 graphA 启用了缩放 平移
  • Vaadin 网格表:如何禁用排序功能并设置一列的颜色

    我在用着GridVaadin 中的表用于数据表示 为此 我试图弄清楚以下两个问题 1 如何禁用每列标题中的排序功能 2 如何设置表格中某一列的颜色Grid table 首先 我找到了Vaadin 文档 https vaadin com do
  • JPEG 中的颜色配置文件检测

    我希望能够检测 JPEG 中是否存在颜色配置文件 需要明确的是 我对实际进行颜色校正或用它们做任何其他事情不感兴趣 我做了一些调查 但找不到任何明确的信息来源 到目前为止我所知道的是 里面有一个颜色配置信息XMP块 XMP 块位于0xFFE
  • 以编程方式生成渐变?

    给定 2 个 RGB 颜色和一个矩形区域 我想在颜色之间生成基本的线性渐变 我进行了快速搜索 我唯一能找到的是这个博客条目 http jtauber com blog 2008 05 18 creating gradients progra
  • 在 iPad 上显示 PDF 文档 - 颜色问题

    我为 iPad 构建了一个 PDF 阅读器 在将预览中的文档与模拟器和设备进行并排比较时 我注意到一些颜色问题 最好的形容就是颜色变得更加浓郁 近距离使用的相似颜色之间的任何差异都会变得更加明显 而所有颜色总体上看起来都更亮 尽管大肆宣传将

随机推荐