javascript - 如何使用插件在 Charts.js 中旋转数据标签?
问题描述
我正在尝试使用 Charts.js 在画布图中绘制风速。数据(风速和风向)来自 JSON URL。代码一切正常,情节如下所示:
我可以通过使用 Charts.js 中的插件、aformatter
和一个rotation
函数来添加箭头,但我想做的是让箭头根据来自 JSON 的风向角旋转。
JSON 文件的格式如下所示:
到目前为止,部分代码如下所示:
Current = Date.now();
$.getJSON("https://api.openweathermap.org/data/2.5/onecall?lat={LAT}&lon={LONG}&dt=" + Current + "&appid={MY API CODE}", function(data) {
$.each(data.hourly, function(key, value) {
var d = new Date(value.dt * 1000);
minutes = "0" + d.getMinutes()
var date_corrected = d.getFullYear() + "-" + [d.getMonth() + 1] + '-' + d.getDate() + ' ' + [d.getHours()] + ':' + minutes.substr(-2);
dataOpen1.push({
x: date_corrected,
y: value.wind_speed
});
dataOpen2.push({
x: date_corrected,
y: value.wind_deg
});
});
var WIND = new Chart(vant, {
plugins: [ChartDataLabels],
type: 'line',
data: {
labels: dataOpen1.map(x => x.x),
datasets: [{
data: dataOpen1.map(y => y.y),
label: 'Viteza vantului ',
borderColor: "#3e95cd",
fill: true
}, ]
},
options: {
plugins: {
datalabels: {
backgroundColor: 'white',
borderRadius: 20,
borderWidth: 3,
borderDashOffset: 20,
color: 'black',
font: {
size: 18
},
formatter: function(value) {
return '\u27a3'
},
rotation: function(ctx) {
return ctx.dataset.data[ctx.dataIndex] * 25;
},
padding: 0
}
},
});
});
所以我想从dataOpen2
(风向)获取值并用它来设置每个数据集的箭头的旋转角度。我知道代码必须在这里:
rotation:
function(ctx) {
.......
return ctx.dataset.data[ctx.dataIndex] * 25;
},
但我真的不知道该怎么做。
解决方案
根据 github 存储库中 CHARTJS 的问题https://github.com/chartjs/Chart.js/issues/5667
您可能需要通过以下方式调整数据:
dataOpen1.push({
x: date_corrected,
y: value.wind_speed
d: value.wind_deg
});
然后你可以使用 datalable 插件修改你的功能
rotation: function(ctx) { return ctx.dataset.data[ctx.dataIndex].d; }
推荐阅读
- azure-devops - 从引用的管道资源中获取最新的构建 ID
- postgresql - 使用 SSL 自签名证书的 PostgreSQL LDAP 身份验证
- javascript - 使用 PHP 表单时不发送电子邮件
- cassandra - Cassandra CQL:如何仅插入不超过 3 年的记录?
- c++ - OpenCV如何处理Mat作为指针来加速代码?
- visual-studio-code - 使用 shell 命令作为 VSCode 任务变量值
- jupyter-notebook - 为什么 plot 在 atom 中出现错误但在 jupyter-notebook 上工作正常?
- elasticsearch - 如何在 Elasticsearch 中限制和排序来自 _msearch 的响应
- mysql - 如何在 django rest 框架中的用户中在 django.contrib.auth.models 中添加一列
- javascript - Ionic 4 中的 Shadow DOM/Web 组件样式