bizcharts 分面图

发布于 2022-09-12 22:20:46 字数 2166 浏览 30 评论 0

我是用bizchart

我想实现这个效果
image.png

注意看Y轴

image.png

相同距离下的值不一样,我希望y轴下方的刻度间居也是一个 200,然后占更大的地方,该怎么处理 怎么处理

源码

import React from "react";
import {
  Chart,
  Line,
  Point,
  Tooltip,
  Axis,
  Interaction,
  Legend,
  Interval,
  Annotation,
  Facet,
} from "bizcharts";
import DataSet from "@antv/data-set";

export default function FlowBar() {
  const tmp = [];
  const dates = [];

  const ds = new DataSet();
  const dv = ds
    .createView()
    .source(tmp)
    .transform({
      type: "filter",

      callback(row) {
        // 判断某一行是否保留,默认返回true
        return (
          new Date(row.date * 1000).getFullYear() ===
          new Date(dates[0] * 1000).getFullYear()
        );
      },
    });

  const dataT = [
    {
      direction: "up",
      data: 200,
      type: "ipv4",
    },
    {
      direction: "down",
      data: 300,
      type: "ipv4",
    },
    {
      direction: "up",
      data: 500,
      type: "ipv6",
    },
    {
      direction: "down",
      data: 2500,
      type: "ipv6",
    },
  ];
  const scale = {
    type: {
      sync: true,
      tickCount: 11,
    },
    data: {
      range: [0, 0.8],
      // formatter(v) {
      //   return `${v}%`;
      // },
    },
    direction: {
      sync: true,
    },
  };

  return (
    <Chart height={600} data={dataT} scale={scale} autoFit padding={50}>
      <Tooltip />
      <Facet
        type="mirror"
        fields={["direction"]}
        // showTitle={false}
        // transpose
        padding={0}
        eachView={(view, facet) => {
          console.log(view, facet);
          view
            .interval()
            .position("type*data")
            .color("type", (type) => {
   

            if (type === "ipv4") {
              return "red"
            }

            })
            .label("data", { textAlign: "end" });
        }}
      />
    </Chart>
  );
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无法回应 2022-09-19 22:20:46

解决思路应该是 同个Chart用的应该是一个刻度尺
我在文档 Scale 度量 里找到了一个log类型,大概可以实现

image.png

// 新增type和base属性
const scale = {
    data: {
      type: 'log',
      base: 200,
    },
};

不过我觉得不太完美 你可以再去文档里看一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文