设置坐标系,F2 支持两种坐标系:笛卡尔坐标系和极坐标系,默认使用笛卡尔坐标系。

配置坐标系

直角坐标系

  1. // 选择笛卡尔坐标系
  2. chart.coord('rect');
  3. // 坐标系翻转,绘制条形图时需要
  4. chart.coord({
  5. transposed: true
  6. });
  7. chart.coord('rect', {
  8. transposed: true
  9. });

极坐标系

  1. // 选择极坐标系
  2. chart.coord('polar');
  3. // 更多配置
  4. chart.coord('polar', {
  5. transposed: true, // 坐标系翻转
  6. startAngle: {Number}, // 起始弧度
  7. endAngle: {Number}, // 结束弧度
  8. innerRadius: {Number}, // 内环半径,数值为 0 - 1 范围
  9. radius: {Number} // 半径,数值为 0 - 1 范围
  10. });

获取坐标系对象

chart.get('coord') 返回坐标系对象。不同坐标系下该对象包含的属性不同,具体说明如下:

  1. 直角坐标系
属性名 类型 解释
start Object 坐标系的起始点,F2 图表的坐标系原点位于左下角。
end Object 坐标系右上角的画布坐标。
transposed Boolean 是否发生转置,true 表示发生了转置。
isRect Boolean 是否是直角坐标系,直角坐标系下为 true。
  1. 极坐标系
属性名 类型 解释
startAngle Number 极坐标的起始角度,弧度制。
endAngle Number 极坐标的结束角度,弧度制。
innerRadius Number 绘制环图时,设置内部空心半径,相对值,0 至 1 范围。
radius Number 设置圆的半径,相对值,0 至 1 范围。
isPolar Boolean 判断是否是极坐标,极坐标下为 true。
transposed Boolean 是否发生转置,true 表示发生了转置。
center Object 极坐标的圆心所在的画布坐标。
circleRadius Number 极坐标的半径值。

示例

环图

Coordinate - 图1

  1. const data = [
  2. { name: '芳华', proportion: 0.4, a: '1' },
  3. { name: '妖猫传', proportion: 0.2, a: '1' },
  4. { name: '机器之血', proportion: 0.18, a: '1' },
  5. { name: '心理罪', proportion: 0.15, a: '1' },
  6. { name: '寻梦环游记', proportion: 0.05, a: '1' },
  7. { name: '其他', proportion: 0.02, a: '1' },
  8. ];
  9. const chart = new F2.Chart({
  10. id: 'ring',
  11. width: 300,
  12. height: 300 * 0.64,
  13. pixelRatio: window.devicePixelRatio,
  14. });
  15. chart.source(data);
  16. chart.legend({
  17. position: 'right'
  18. });
  19. chart.coord('polar', {
  20. transposed: true,
  21. innerRadius: 0.7,
  22. });
  23. chart.axis(false);
  24. chart
  25. .interval()
  26. .position('a*proportion')
  27. .color('name', [
  28. '#1890FF',
  29. '#13C2C2',
  30. '#2FC25B',
  31. '#FACC14',
  32. '#F04864',
  33. '#8543E0',
  34. ])
  35. .adjust('stack');
  36. chart.render();

半圆

Coordinate - 图2

  1. const data = [
  2. { name: '芳华', proportion: 0.4, a: '1' },
  3. { name: '妖猫传', proportion: 0.2, a: '1' },
  4. { name: '机器之血', proportion: 0.18, a: '1' },
  5. { name: '心理罪', proportion: 0.15, a: '1' },
  6. { name: '寻梦环游记', proportion: 0.05, a: '1' },
  7. { name: '其他', proportion: 0.02, a: '1' },
  8. ];
  9. const chart = new F2.Chart({
  10. id: 'pie',
  11. width: 300,
  12. height: 300 * 0.64,
  13. pixelRatio: window.devicePixelRatio,
  14. });
  15. chart.source(data);
  16. chart.legend({
  17. position: 'bottom',
  18. align: 'center'
  19. });
  20. chart.coord('polar', {
  21. transposed: true,
  22. startAngle: -Math.PI,
  23. endAngle: 0,
  24. });
  25. chart.axis(false);
  26. chart
  27. .interval()
  28. .position('a*proportion')
  29. .color('name', [
  30. '#1890FF',
  31. '#13C2C2',
  32. '#2FC25B',
  33. '#FACC14',
  34. '#F04864',
  35. '#8543E0',
  36. ])
  37. .adjust('stack');
  38. chart.render();