Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript amCharts 4:valueAxis标签和工具提示文本_Javascript_Amcharts_Amcharts4 - Fatal编程技术网

Javascript amCharts 4:valueAxis标签和工具提示文本

Javascript amCharts 4:valueAxis标签和工具提示文本,javascript,amcharts,amcharts4,Javascript,Amcharts,Amcharts4,在从外部数据源输入的水平条形图上,我需要将valueAxis标签和工具提示文本上的数据值更改为文本(用于显示目的) 我设法找到了一种方法来更改valueAxis标签,这似乎有效(尽管不确定这是否是最佳做法?) 但我正在努力更改valueAxis工具提示和系列工具提示上的文本,如屏幕截图所示,其中“3”需要显示为“相当重要”,以及在图表上悬停时的其他值 编辑 我添加了调用amCharts适配器的代码,并将valueAxis文本返回为XXXXXX,但目标值没有正常工作 但我看不出我错在哪里 // T

在从外部数据源输入的水平条形图上,我需要将valueAxis标签和工具提示文本上的数据值更改为文本(用于显示目的)

我设法找到了一种方法来更改valueAxis标签,这似乎有效(尽管不确定这是否是最佳做法?)

但我正在努力更改valueAxis工具提示和系列工具提示上的文本,如屏幕截图所示,其中“3”需要显示为“相当重要”,以及在图表上悬停时的其他值

编辑

我添加了调用amCharts适配器的代码,并将valueAxis文本返回为XXXXXX,但目标值没有正常工作

但我看不出我错在哪里

// This Adapter is to change the text in the valueAxis Tooltip
valueAxis.adapter.add("getTooltipText", (text, target) => {
  if (target.dataItem && (target.dataItem.value == 0)) {
    return "NOT NEEDED";
  }
  if (target.dataItem && (target.dataItem.value == 1)) {
    return "UNSURE";
  }
  if (target.dataItem && (target.dataItem.value == 3)) {
    return "NICE TO HAVE";
  }
  if (target.dataItem && (target.dataItem.value == 5)) {
    return "MUST HAVE";
  }
  else {
    return "XXXXXX";
  }
});
下面是简短的总结

数据源以

    "Name": "Photographer",
    "Category A": 3,
    "Category B": 5,
    "Category C": 1,
    "Category D": 0,
    "Category E": 3
在图表上,我想将数值显示为文本

    0 to display as FAIRLY IMPORTANT
    1 to display as NOT SURE
    3 to display as FAIRLY IMPORTANT
    5 to display as VERY IMPORTANT

这是我的代码(到目前为止),我需要清理一下,一旦我完成了它的工作

//创建图表实例
var chart=am4core.create(“CHARTDIV”,am4charts.XYChart);
//作为数据URI的样本数据的base64编码版本
函数dataURI(){
返回"数据:application/json;base64,EWOGIcjzWnVCMrzijogwLogicageWogicagicagicagAwQoiaxlaoGicagicagiczLbGrzijogWogicagicOyw1LigGigBob3Rvz3JHcGhlcisIcIcIcgicagicGvNb3J5IEOIAZlaogicagicgicagicgIcgIcgIcgIdDyxRz29YesbcIbWkIcgicagicIf20Z0Z0ZWgIcIbWgIdGgIcIcIcIcIcIcIcIcIcIcIcIcIcIcIcIcIcIcIcIcIcOiAiMjAxOC0wNC0xMlQxNzoyNzowNi4wMDBaIgogICAgfQogIF0KfQ==”;
}
//添加数据
chart.dataSource.url=dataURI();//用于演示的假url
//使用Airtable JSON输出以实现amCharts兼容性时始终需要
chart.dataSource.events.on(“parseended”,函数(ev){
//已解析的数据被分配给数据源的“数据”属性
ev.target.data=ev.target.data.records.map(函数(数据项){
返回{
“类别A”:dataItem.fields[“类别A”],
“类别B”:数据项字段[“类别B”],
“C类”:数据项.字段[“C类”],
“D类”:数据项字段[“D类”],
“E类”:数据项。字段[“E类”],
“名称”:dataItem.fields.Name
}
});
}); 
//当Airtable行和列需要转置时需要
chart.dataSource.events.on(“parseended”,函数(ev){
var questionMap={};//将问题映射到数据元素的查找表
ev.target.data.forEach(功能(项){
Object.key(item).forEach(function(key){
如果(key.indexOf('Name')==-1){//对非响应键进行操作
如果(!questionMap[键]){
问题图[关键点]={
“名称”:键
};//如果名称/问题对不存在,则创建一个包含该对的对象
}
questionMap[key][item.Name]=item[key];//将响应+值分配给对象(例如“必须有”:75)
}
});
});
//将查找表重新映射为数组
ev.target.data=Object.keys(问题地图).map(函数(问题){
返回问题地图[问题];
});
});
//以像素为单位设置单元格大小
var-cellSize=50;
图表.事件.开启(“数据验证”,功能(ev){
//获取感兴趣的对象
var图表=ev.目标;
var categoryAxis=chart.yAxes.getIndex(0);
//计算我们需要如何调整图表高度
var adjustHeight=chart.data.length*cellSize-categoryAxis.pixelHeight;
//获取当前图表高度
var targetHeight=chart.pixelHeight+adjustHeight;
//将其设置在图表的容器上
chart.svgContainer.htmlElement.style.height=targetlight+“px”;
});
//创建类别轴
var categoryAxis=chart.yAxes.push(新的am4charts.categoryAxis());
categoryAxis.dataFields.category=“Name”;
categoryAxis.renderer.grid.template.location=0;
//类别轴的栏或列宽
categoryAxis.renderer.cellStartLocation=0.1;
categoryAxis.renderer.cellEndLocation=0.9;
//创建价值轴
var valueAxis=chart.xAxes.push(新的am4charts.valueAxis());
valueAxis.numberFormatter.numberFormat=“#”;
valueAxis.min=0;
valueAxis.max=6;
valueAxis.cursorTooltipEnabled=真;
//创建值轴-禁用标签
valueAxis.renderer.grid.template.disabled=true;
valueAxis.renderer.labels.template.disabled=true;
//创建值轴-定义网格线
函数createGrid(值){
var range=valueAxis.axisRanges.create();
range.value=值;
range.label.text=“”;
}
createGrid(0);
createGrid(1);
创建网格(3);
创建网格(5);
创建网格(6);
//创建值轴-定义栅格标签
函数createLabel(值、标签、位置){
var range=valueAxis.axisRanges.create();
range.value=值;
range.grid.strokeOpacity=0;
range.label.location=位置| 0;
range.label.dataItem.text=标签;
range.label.fillOpacity=1;
}
createLabel(“0”,“不重要”);
createLabel(“1”,“不确定”);
createLabel(“3”,“相当重要”);
createLabel(“5”,“非常重要”);
//此适配器用于更改valueAxis工具提示中的文本
valueAxis.adapter.add(“GetToolTiptText”,(文本,目标)=>{
如果(target.dataItem&&(target.dataItem.value>=0)){
返回“不重要”;
}
if(target.dataItem&&(target.dataItem.value==1)){
返回“不确定”;
}
if(target.dataItem&&(target.dataItem.value==3)){
返回“相当重要”;
}
if(target.dataItem&&(target.dataItem.value==5)){
返回“非常重要”;
}
否则{
返回“XXXXXX”;
}
});
//创建系列
函数createSeries(字段、名称){
//设置系列
var series=chart.series.push(新的am4charts.ColumnSeries());
series.name=名称;
series.dataFields.valueX=字段;
series.dataFields.categoryY=“Name”;
series.sequencedInterpolation=真;
//把它叠起来
series.stacked=true;
//配置列
series.tooltip.getFillFromObject=false;
series.tooltip.background.fill=am4core.color(“#272d3a”);
series.tooltip.background.strokeWidth=0;