我正在使用Electron 图表库为我的数据创建条形图.

option.series = [
        {
            name: 'buy',
            type: 'bar',
            stack: 'one',
            data: Object.values(chartData?.data || {}).map(elem => -elem.buy?.total),
            color: colors.bought,
            label: {
                show: true,
                position: "bottom",
                formatter: (value) => Math.round(Math.abs(value.data))
            },
            tooltip: {
                formatter: (data) => Math.abs(data.value).toString()
            },
            // barWidth:this.data
        },
        {
            name: 'sell',
            type: 'bar',
            stack: 'one',
            data: Object.values(chartData?.data || {}).map(elem =>elem.sell?.total),
            color: colors.sold,
            label: {
                show: true,
                position: "top",
                formatter: (value) => Math.round(Math.abs(value.data))
            },
            tooltip: {
                formatter: (data) => Math.abs(data.value).toString()
            },
        },
        {
            name: 'profite',
            type: 'bar',
            stack: 'two',
            barGap: '-100%',  
            z: 100,
            data: Object.values(chartData?.data || {}).map(elem => elem.sell?.profit),
            color: colors.profit,
            label: {
                show: true,
                position: "insideTop",
                textBorderWidth: -1,
                offset: [0, -20],
                formatter: (value) => Math.round(Math.abs(value.data))
            },
            tooltip: {
                formatter: (data) => Math.abs(data.value).toString()
            },
        },
    ]

我正试图根据每个条的值 for each 条设置不同的宽度.

wine 吧宽度:${getBarWidth((Object.values(chartData?.data || {}).map((elem) => elem.sell?.amount)))}%

所以我每次都会返回不同的数据值,但它不会根据数据值(买入、卖出等)更改每个条.

非常感谢.

推荐答案

正如您所指出的,barWidth设置bar系列中所有条的宽度.我不认为有办法在同一个bar系列中设置每个小节的宽度.

你应该用custom series.

Custom系列有一个名为renderItem的参数,可以在其中编写图表的渲染逻辑.在这里,您可以使用graphics显示自定义形状(在您的情况下是自定义大小的条形图).

这是我在他们的网站上找到的example个,基本上就是你想要的.

var container = document.getElementById('main');
var chart = echarts.init(container);

const colorList = [
  '#4f81bd',
  '#c0504d',
  '#9bbb59',
  '#604a7b',
  '#948a54',
  '#e46c0b'
];
const data = [
  [10, 16, 3, 'A'],
  [16, 18, 15, 'B'],
  [18, 26, 12, 'C'],
  [26, 32, 22, 'D'],
  [32, 56, 7, 'E'],
  [56, 62, 17, 'F']
].map(function (item, index) {
  return {
    value: item,
    itemStyle: {
      color: colorList[index]
    }
  };
});

chart.setOption({
  title: {
    text: 'Profit',
    left: 'center'
  },
  tooltip: {},
  xAxis: {
    scale: true
  },
  yAxis: {},
  series: [
    {
      type: 'custom',
      renderItem: function (params, api) {
        var yValue = api.value(2);
        var start = api.coord([api.value(0), yValue]);
        var size = api.size([api.value(1) - api.value(0), yValue]);
        var style = api.style();
        return {
          type: 'rect',
          shape: {
            x: start[0],
            y: start[1],
            width: size[0],
            height: size[1]
          },
          style: style
        };
      },
      label: {
        show: true,
        position: 'top'
      },
      dimensions: ['from', 'to', 'profit'],
      encode: {
        x: [0, 1],
        y: 2,
        tooltip: [0, 1, 2],
        itemName: 3
      },
      data: data
    }
  ]
});
#main {
  width: 600px;
  height: 400px;
}
<html>
  <body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.3.2/echarts.min.js"></script>
    <div id="main"></div>
  </body>
</html>

Reactjs相关问答推荐

重定向React路由中没有根文件夹的所有路径匹配

react 路由导航不工作,但手动路由工作

根据另一个Select中的选定值更改Select中的值

使用`Link`包装`tr`标记会在Next.js中产生水合错误14

如何使用TouchStart/TouchEnd在Table ReactJS中交换位置?

无法使用导入app/page.jsx的组件中的tailwind 类文本操作和自定义动画

Javascript - 正则表达式不适用于 MAC OS - 编码?

列表中的每个子项都应该有一个唯一的keyprops .在react 应用程序中

Symfony ux-react:使用react_component()时React组件不会渲染

如何更新redux状态存在的输入框

当`useSelector`回调中的属性值更新时,将会使用更新后的值吗?

将水平滚动视图添加到底部导航选项卡

在react 中从外部 api 渲染列表

ReactJS 动态禁用按钮

无法读取未定义的react native 的属性参数

React Router 6.4CreateBrowserRouter子元素不显示

setState 改变对象引用

React Router v6 - 访问嵌套路由和处理手写 url 的正确方法

如何将 id 从页面传递到另一个页面?

CORS 政策:无访问控制允许来源-AWS 和 Vercel