You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AmCharts双Y轴图表USD系列渲染异常问题求助

问题分析与解决方案

从你的描述和提供的信息来看,蓝色USD线条渲染异常的核心问题出在JSON数据格式和图表配置细节上,咱们一步步拆解:

1. JSON数据类型错误(最关键)

你提供的JSON里,Production和USD字段的值都是字符串类型(带引号),比如:

{"Day":"24-05 10H","Production":"0.82431267","USD":"482.02837415988"}

AmCharts绘制图表时需要数值类型的数据,字符串无法被正确解析为数值进行计算和渲染,这会直接导致线条出现异常波动或无法正常显示。

解决方法:
修改后端json.php的输出逻辑,把Production和USD的值转为数值类型(去掉引号),正确的JSON格式应该是:

{"Day":"24-05 10H","Production":0.82431267,"USD":482.02837415988}

2. 存在重复的Category字段值

检查你的JSON数据,发现Day字段有重复项(比如24-05 10H出现了两次):

{"Day":"24-05 10H","Production":"0.82431267","USD":"482.02837415988"},
...
{"Day":"24-05 10H","Production":"0.90740126","USD":"535.88759172324"},

AmCharts的Serial图表要求分类字段(这里是Day)的值必须唯一,重复值会打乱图表的渲染逻辑,引发线条错位、异常波动等问题。

解决方法:
清理JSON数据,确保每个Day的值唯一,比如检查是否是时间格式笔误,修正为正确的时间段。

3. 图表配置中的细节错误

(1)fillColorsField配置错误

你在柱状图的配置里写了:

"fillColorsField": "#B0DE09"

fillColorsField的作用是从JSON数据的某个字段读取颜色值,而不是直接写固定颜色。如果想给柱状图设置固定填充色,应该用fillColors而非fillColorsField:

"fillColors": "#B0DE09"

(2)双Y轴同步设置不合理

你设置了synchronizeWith: "v1"和synchronizationMultiplier: 5,但从数据来看,USD的数值大概是Production的500-600倍左右,设置5的乘数会导致USD轴的刻度范围被严重压缩,线条看起来异常扁平或扭曲。

解决方法:
要么去掉轴同步的设置,让两个轴自动计算合适的范围;要么根据实际数据比例调整synchronizationMultiplier(比如设置为600),或者手动指定轴的min/max值来适配数据。

修正后的完整配置示例

结合以上修改,调整后的图表配置如下:

<script> 
var chart = AmCharts.makeChart("chartdiv", { 
  "type": "serial", 
  "dataLoader": { 
    "url": "http://x.x.x.x/json.php", 
    "format": "json" 
  }, 
  "valueAxes": [
    { 
      "id": "v1", 
      "startDuration": 1, 
      "axisColor": "#FF6600", 
      "axisThickness": 5, 
      "gridAlpha": 0.1, 
      "axisAlpha": 1 
    }, 
    { 
      "id": "v2", 
      "axisColor": "#FCD202", 
      "axisThickness": 5, 
      "gridAlpha": 0, 
      "axisAlpha": 1, 
      "position": "right"
      // 去掉同步设置,让轴自动计算范围
    }
  ], 
  "graphs": [
    { 
      "valueAxis": "v1", 
      "type": "column", 
      "fillColors": "#B0DE09", // 修正为fillColors
      "balloonText": "[[category]]: <b>[[value]]</b>", 
      "fillAlphas": 0.8, 
      "lineAlpha": 0.2, 
      "title": "Production Crypto", 
      "valueField": "Production" 
    }, 
    { 
      "valueAxis": "v2", 
      "type": "smoothedLine", 
      "lineColor": "#364cf2", 
      "lineThickness": 3, 
      "bulletBorderThickness": 1, 
      "hideBulletsCount": 30, 
      "title": "Production USD", 
      "valueField": "USD", 
      "fillAlphas": 0 
    }
  ], 
  "chartCursor": { 
    "categoryBalloonEnabled": false, 
    "cursorAlpha": 0, 
    "zoomable": false 
  }, 
  "categoryField": "Day", 
  "categoryAxis": { 
    "gridPosition": "start", 
    "gridAlpha": 0, 
    "tickPosition": "start", 
    "tickLength": 20 
  } 
}); 
</script>

按照以上步骤修改后,应该就能正常渲染出双Y轴的图表了。

内容的提问来源于stack exchange,提问作者R_life_R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:08:24