chart.js - 如何在图表js中设置饼图样式?我想改变边框颜色、边框宽度并给它们阴影
问题描述
这是我的 HTML div:
<canvas id="mycanvas" width="290" height="140"></canvas>
JavaScript:
$(document).ready(function() {
var ctx = $("#mycanvas").get(0).getContext("2d");
var data = [{
value: 923864,
color: "#58508d",
highlight: "#003f5c",
label: "Dr. John",
},
{
value: 720988,
color: "#3292b0",
highlight: "#6fefff",
label: "Alex"
},
{
value: 179539,
color: "orange",
highlight: "darkblue",
label: "Other",
},
];
var piechart = new Chart(ctx).Pie(data);
});
解决方案
首先,您应该升级到最稳定的 Chart.js 版本,目前是 v2.9.4。
dataset
接受的属性数量,可以定义为边框样式。它的颜色和宽度通过以下控制。
borderColor
弧形边框颜色borderWidth
弧形边框宽度(以像素为单位)。
为了看到阴影,您可以使用Plugin Core API。API 提供了一系列可用于执行自定义代码的钩子。beforeDraw
例如,您可以通过 绘制一个带有阴影的圆圈CanvasRenderingContext2D.arc()
。
请在下面查看您修改后的代码,看看它是如何工作的。
new Chart('canvas', {
type: 'pie',
plugins: [{
beforeDraw: chart => {
var ctx = chart.chart.ctx;
ctx.save();
ctx.beginPath();
ctx.fillStyle = 'white';
ctx.shadowColor = 'black';
ctx.shadowBlur = 20;
ctx.shadowOffsetX = -10;
ctx.shadowOffsetY = 0;
const x = chart.chart.width / 2;
const y = chart.chart.height / 2 + 15;
ctx.arc(x, y, 95, 0, Math.PI*2, false);
ctx.fill();
ctx.restore();
}
}],
data: {
labels: ['Dr. John', 'Alex', 'Other'],
datasets: [{
data: [923864, 720988, 179539],
backgroundColor: ['#58508d', '#3292b0', 'orange'],
hoverBackgroundColor: ['#003f5c', '#6fefff', 'darkblue'],
borderWidth: 0
}],
},
options: {
responsive: false,
layout: {
padding: {
top: 15,
bottom: 20
}
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
<canvas id="canvas" height="260"></canvas>
推荐阅读
- java - 给定一个 0 和 1 的二进制矩阵。找到 1 的最长序列,无论是行还是列。JAVA
- appium-ios - 收到此错误:处理命令时发生未知的服务器端错误。原始错误:无法读取未定义的属性“替换”
- php - php-fpm 中的 Apache Kafka Producer - 生产者连接过多
- flutter - bottomNavigationBar 中的文字没有出现!!!扑
- java - 具有一个元素的 LinkedBlockingQueue - 读取器/写入器竞争条件
- node.js - chat.postMessage 的问题 - channel_not_foud
- r - 获取 RandomForest 中单个树的重要性
- assembly - 从 8086 emu 读取一个字符串并输出回来
- c# - 将文本框值传递给 sql 查询 c# 应用程序
- vba - Word 表查找分段符,将行内容分成两行