Javascript 在Highcharts中,当重新启用图表最右边的元素时,我的数据标签将消失
我正在使用react highcharts为一些工作数据绘制一个相对简单的柱状图。老板希望它成立,以便隐藏一个传说上的项目将调整规模,即使元素在图表的中间。我跟随highcharts论坛的fiddle,使我的数据消失并重新出现。太好了,一切正常!但是我有一个错误,我无法在我的代码中确定 每当我删除并返回最右边的可见元素时,右边元素的第二个元素就会丢失其数据标签 我有理由肯定问题在于我的HighCharts选项对象。以下是:Javascript 在Highcharts中,当重新启用图表最右边的元素时,我的数据标签将消失,javascript,highcharts,Javascript,Highcharts,我正在使用react highcharts为一些工作数据绘制一个相对简单的柱状图。老板希望它成立,以便隐藏一个传说上的项目将调整规模,即使元素在图表的中间。我跟随highcharts论坛的fiddle,使我的数据消失并重新出现。太好了,一切正常!但是我有一个错误,我无法在我的代码中确定 每当我删除并返回最右边的可见元素时,右边元素的第二个元素就会丢失其数据标签 我有理由肯定问题在于我的HighCharts选项对象。以下是: const highChartsOptionsObject= { ch
const highChartsOptionsObject= {
chart: {
type: "column",
style: {
fontFamily: "helvetica",
},
height: 300,
},
title: {
text: null,
},
xAxis: {
allowDecimals: true,
type: "category",
crosshair: true,
},
yAxis: {
min: 0,
title: {
text: getLabel(),
},
labels: {
formatter: getLabelString()
},
},
},
credits: {
enabled: false,
},
legend: {
enabled: true,
},
tooltip: {
formatter: function () {
return `
<b>${this.point.name}</b><br />
${
getTooltip();
}
`;
},
},
plotOptions: {
column: {
stacking: "normal",
pointPadding: 0.3,
borderWidth: 0,
dataLabels: {
enabled: true,
crop: false,
overflow: "none",
formatter: function () {
const labelString = "hard coded test";
return labelString;
},
},
},
series: {
cursor: "pointer",
events: {
legendItemClick: function () {
if (this.visible) {
this.setData([], false);
} else {
let elementData = getSeries()[this.index].data[0];
this.setData([{ ...elementData }], false);
}
},
},
},
},
series: getSeries(),
const highChartsOptionsObject={
图表:{
键入:“列”,
风格:{
fontFamily:“helvetica”,
},
身高:300,
},
标题:{
文本:空,
},
xAxis:{
allowDecimals:对,
类型:“类别”,
十字准星:没错,
},
亚克斯:{
分:0,,
标题:{
text:getLabel(),
},
标签:{
格式化程序:getLabelString()
},
},
},
学分:{
启用:false,
},
图例:{
启用:对,
},
工具提示:{
格式化程序:函数(){
返回`
${this.point.name}
${
getTooltip();
}
`;
},
},
打印选项:{
专栏:{
堆叠:“正常”,
点填充:0.3,
边框宽度:0,
数据标签:{
启用:对,
作物:假,
溢出:“无”,
格式化程序:函数(){
const labelString=“硬编码测试”;
返回标签串;
},
},
},
系列:{
光标:“指针”,
活动:{
legendItemClick:函数(){
如果(这个可见){
this.setData([],false);
}否则{
让elementData=getSeries()[this.index].data[0];
this.setData([{…elementData}],false);
}
},
},
},
},
series:getSeries(),
})
作为参考,我的其他highcharts选项有:immutable:true和allowChartUpdate:true
如果有人认为其他事情是相关的,我很乐意提供更多信息,我只需要对它进行一些清理就可以了。我在谷歌上搜索了一下,最后我发现了我的问题。在转换期间,列上的数据标签重叠。如果尚未将数据标签的allowOverlap设置为true,则默认为false。由于转换会导致重叠,highcharts会将其中一个数据标签设置为不可见/不显示 只需设置以下各项,即可轻松解决此问题:
dataLabels:{
allowOverlap: true
}
我试图复制这个问题:但效果很好。也许它来自yAxis中的格式化程序:getLabelString()。您能在我可以使用的某个在线编辑器上用示例数据重现您的案例吗?如果要在React环境中执行此操作,请从本演示开始:如果纯JS足够,请从本演示开始: