如何在 Javascript 中的图表上将文本显示为系列?
How to show text as a series on a chart in Javascript?
我如何将只是标签的系列添加到如下所示的图表中?
我很乐意使用任何图表 Javascript 库,例如 ECharts、Chartist、Chartjs。我认为 Chartjs 是最简单的。
基本上我正在尝试编写自动为歌曲创建图形乐谱的软件 - 它输出一个大的组合图表,音量作为一条线,音调作为另一条线,滤波器截止作为另一条线,和弦作为文本在一条水平线上。大约有 3500 个 x 轴点(时间样本)。
我查看了所有三个图表库的所有画廊,但找不到一种方法来显示文本,甚至是条形图上的标签并使条形本身不可见。
您可以在 HighCharts 中使用 scatter
系列类型来执行此操作。您将为所有点赋予相同的 y 值,以便它们出现在图表中的单行中:
data: [{x: 0, y: 50, name: 'D'},{x: 2, y: 50, name: 'A'},{x: 3, y: 50, name: 'G'},{x: 4, y: 50, name: 'D'},{x: 5, y: 50, name: 'G'},{x: 6, y: 50, name: 'F'}]
然后您可以修改点以不渲染(无标记):
plotOptions: {
scatter: {
marker: {
radius: 0,
states: {
hover: {
enabled: false,
}
}
},
...
然后使显示的标签是音符的标签而不是 y 值:
dataLabels: {
enabled: true,
borderRadius: 5,
backgroundColor: 'rgba(252, 255, 197, 0.7)',
borderWidth: 1,
borderColor: '#AAA',
y: -6,
formatter: function() {
var s = this.point.name;
return s;
}
},
如果需要,您还需要隐藏 tooltip
。我在示例中通过不显示任何工具提示来暴力破解。您可能想在您的图例中包含或不包含笔记系列 - 我禁用了它。
dataLabel
的格式非常基本,但您可以根据需要设置样式。
这里正在工作jsFiddle。
在 Highcharts 中,最简单的方法是使用注释模块:
现场演示:http://jsfiddle.net/BlackLabel/vhscjrua/
文档:https://www.highcharts.com/docs/advanced-chart-features/annotations-module
您还可以使用任何类型的具有右定位数据标签的系列:
Highcharts.chart('container', {
chart: {
events: {
load: function() {
var points = this.series[0].points;
Highcharts.each(points, function(point) {
point.dataLabel.attr({
y: 20
});
});
}
}
},
series: [{
color: 'rgba(0,0,0,0)',
zIndex: 0,
dataLabels: {
enabled: true
},
data: [1, 4, 5, 2, 1, 7]
}]
});
我如何将只是标签的系列添加到如下所示的图表中?
我很乐意使用任何图表 Javascript 库,例如 ECharts、Chartist、Chartjs。我认为 Chartjs 是最简单的。
基本上我正在尝试编写自动为歌曲创建图形乐谱的软件 - 它输出一个大的组合图表,音量作为一条线,音调作为另一条线,滤波器截止作为另一条线,和弦作为文本在一条水平线上。大约有 3500 个 x 轴点(时间样本)。
我查看了所有三个图表库的所有画廊,但找不到一种方法来显示文本,甚至是条形图上的标签并使条形本身不可见。
您可以在 HighCharts 中使用 scatter
系列类型来执行此操作。您将为所有点赋予相同的 y 值,以便它们出现在图表中的单行中:
data: [{x: 0, y: 50, name: 'D'},{x: 2, y: 50, name: 'A'},{x: 3, y: 50, name: 'G'},{x: 4, y: 50, name: 'D'},{x: 5, y: 50, name: 'G'},{x: 6, y: 50, name: 'F'}]
然后您可以修改点以不渲染(无标记):
plotOptions: {
scatter: {
marker: {
radius: 0,
states: {
hover: {
enabled: false,
}
}
},
...
然后使显示的标签是音符的标签而不是 y 值:
dataLabels: {
enabled: true,
borderRadius: 5,
backgroundColor: 'rgba(252, 255, 197, 0.7)',
borderWidth: 1,
borderColor: '#AAA',
y: -6,
formatter: function() {
var s = this.point.name;
return s;
}
},
如果需要,您还需要隐藏 tooltip
。我在示例中通过不显示任何工具提示来暴力破解。您可能想在您的图例中包含或不包含笔记系列 - 我禁用了它。
dataLabel
的格式非常基本,但您可以根据需要设置样式。
这里正在工作jsFiddle。
在 Highcharts 中,最简单的方法是使用注释模块:
现场演示:http://jsfiddle.net/BlackLabel/vhscjrua/
文档:https://www.highcharts.com/docs/advanced-chart-features/annotations-module
您还可以使用任何类型的具有右定位数据标签的系列:
Highcharts.chart('container', {
chart: {
events: {
load: function() {
var points = this.series[0].points;
Highcharts.each(points, function(point) {
point.dataLabel.attr({
y: 20
});
});
}
}
},
series: [{
color: 'rgba(0,0,0,0)',
zIndex: 0,
dataLabels: {
enabled: true
},
data: [1, 4, 5, 2, 1, 7]
}]
});