岚思榛 2024-05-20 09:46 采纳率: 25%
浏览 7
已结题

问题:使用HighCharts做交互式甘特图时,任务条的节点跟X轴的网格线没有对齐是为什么

问题:使用HighCharts做交互式甘特图时,任务条的节点跟X轴的网格线没有对齐是为什么

img


```javascript
HighCharts.chart('container', {
  chart: {
    type:'gantt',
    scrollablePlotArea: {
      minWidth: 300, // 设置最小可滚动宽度
      scrollPositionX: 1 // 设置默认滚动位置
    },
    zoomType: 'x', // 启用x轴方向的缩放
    height: 800, // 设置整体图表高度
  },
  title: {
    text: '交互式甘特图' //设置大标题
  },
  subtitle: {
    text: 'test' //设置小标题
  },
  plotOptions: {
    series: {
      animation: false, //禁用动画效果
      dragDrop: {
        draggableX: true, //允许在x轴方向上拖动数据点
        draggableY: true, //允许在y轴方向上拖动数据点
        dragPrecisionX:24 * 3600 * 1000 //设置x轴方向上拖动的精度
      },
      dataLabels: {
        enabled: true, //启用数据标签显示
        format: '{point.name}', //数据标签的格式,这里使用了来显示数据点的名称
        style: {
          cursor: 'default', //鼠标悬停在数据标签上时显示默认光标
          pointerEvents: 'none' //数据标签不接收鼠标事件
        }
      },
      allowPointSelect: true, //启用图表中数据点的选中功能的选项
      point: {
        events: {
          select: updateRemoveButtonStatus, //选中时间
          unselect: updateRemoveButtonStatus, //取消选中事件
          remove: updateRemoveButtonStatus, //移动事件
        }
      }
    }
  },
  xAxis: {
    opposite: true, //x轴显示在上方.反之下方
    type: 'datetime', //时间类型
    min: minTimestamp, //默认x轴最小显示时间
    max: maxDate, //默认x轴最大显示时间
    plotBands: plotBands, //图中显示样式(周末颜色突出)
    grid: {
      enabled: true, // 启用x轴上的网格线
    },
    pointInterval: 24 * 3600 * 1000, //设置数据点之间的时间间隔
    tickInterval: 24 * 3600 * 1000, // 网格线按天为单位显示
    gridLineWidth: 1, // 设置网格线宽度为1像素
    gridLineColor: 'lightgray', // 设置网格线颜色为浅灰色
    dateTimeLabelFormats: {
      day: '%m-%d' //日期标签的格式被设置为 月份-日期
    },
    maxPadding: 0.9, // 控制轴的最大填充空间  (没效果)
    endOnTick: true, // 确保轴线结束在刻度线上  (没效果)
    ordinal: false,  //确保数据点按照时间显示 (没效果)
  },
  yAxis: {
    type: 'category', //指定坐标轴的数据类型为类别
    title:{
      text:'设备',
    },
    grid: {
      enabled: true, //启用图表网格显示
      borderWidth: 1, //设置网格边框的宽度为1个像素
    },
    categories: ['机器 1', '机器 2', '机器 3'],
    reversed: true, // 从上至下显示
    tickmarkPlacement:'between'
  },
  //数据
  series:tasks,
}

```

  • 写回答

3条回答 默认 最新

  • Kwan的解忧杂货铺 2024-05-20 09:46
    关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    问题分析:

    交互式甘特图的任务条的节点跟 X 轴的网格线没有对齐的问题,可能是由于数据点之间的时间间隔设置不合适,或者是数据点的位置计算不准确导致的。

    解决方案:

    1. 设置数据点之间的时间间隔

    可以通过调整 xAxis 中的 pointInterval 和 tickInterval 属性来控制数据点之间的时间间隔。例如,如果需要按天为单位显示数据点,可以设置 pointInterval 和 tickInterval 的值为 24 * 3600 * 1000。

    // 设置数据点之间的时间间隔为 24 小时
    xAxis: {
        pointInterval: 24 * 3600 * 1000, 
        tickInterval: 24 * 3600 * 1000,
        ...
    }
    
    1. 数据点位置计算不准确

    如果数据点的位置计算不准确,则需要检查数据源的数据格式是否正确,并确保时间戳的格式正确。

    //  示例数据源格式
    {
        name: '任务 1',
        start: Date.UTC(2021, 11, 1),
        end: Date.UTC(2021, 11, 3)
    }
    

    另外,还需要注意 plotOptions.series点中的 pointPlacement 属性,该属性指定了数据点在 x 轴上的对齐方式,如果该值为 null 或者 ‘between’,则数据点的左右两端会各占一半的格子宽度。如果需要让数据点与网格线对齐,则应将该值设置为 0。

    // 将点的对齐方式设置为 0
    plotOptions: {
        series: {
            pointPlacement: 0,
            ...
        }
    }
    

    修改上述代码后,应该可以解决任务条的节点和X轴的网格线没有对齐的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 今天
  • 已采纳回答 6月19日
  • 创建了问题 5月20日

悬赏问题

  • ¥15 matlab支持向量机使用错误
  • ¥99 利用C/C++语言,使用TCP/IP协议,编一个简易聊天程序
  • ¥15 如何使用python 实现对串口/dev/ttyUSB0进行上锁,使得该串口只能在一个python脚本中使用,其他脚本不能操作这个串口
  • ¥15 晶体塑性有限元——Damask求解
  • ¥30 设计一个图形用户界面来控制你机械臂的运动
  • ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
  • ¥15 前端返回pdf时不显示内容
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图