c3 样条图 - 多个 y 轴上的多个数据

c3 spline chart - Multiple Data on Multiple y Axes

如何将 [data1、data2 和 data3] 绑定到 y 轴,将 data4 绑定到 y2 轴? 这是我的实际解决方案:https://codepen.io/luko248/pen/wvaeYON.

您需要在数据参数中指定 y2 轴数据:

data: { 
    axes: {data4: 'y2'} 
}

查看自定义图表下的 C3 文档:1. 附加轴 https://c3js.org/gettingstarted.html#customize

我根据您的代码示例制作了一个 JSFiddle:https://jsfiddle.net/89pfy1k4/2/

在嵌入的 JS 下方截取:

 var chart = c3.generate({
        bindto: '#PowerChart',
       
        data: {
            x: 'DateTime',
            xFormat: '%Y-%m-%d %H:%M:%S', //%Y-%m-%d
            columns: [
                ['DateTime', '2019-01-02 00:00:00', '2019-01-02 00:10:00', '2019-01-02 00:20:00', '2019-01-02 00:30:00', '2019-01-02 00:40:00', '2019-01-02 00:50:00', '2019-01-02 01:00:00',
                    '2019-01-02 01:10:00', '2019-01-02 01:20:00'],
                ['data1', 30, 20, 10, 15, 35, 16, 18, 42],
                ['data2', 120, 110, 98, 45, 87, 56, 72, 32],
                ['data3', 80, 75, 95, 105, 120, 40, 35, 68],
                ['data4', 40, 45, 40, 45, 50, 40, 45, 50],
            ],
            names: {
                data1: 'PV Power(W)',
                data2: 'Grid(W)',
                data3: 'Battery(W)',
                data4: 'SOC(%)',
            },
            colors: {
                data1: '#be1b19',
                data2: '#ff9c38',
                data3: '#06ac4e',
                data4: 'purple',
            },
            axes: { data4: 'y2'},
            type: `spline`
        },
        axis: {
            x: {
                type: 'timeseries',
                tick: {
                    format: '%H:%M',
                }
            },
            y: {
                tick: {
                    format: function (d) { return d + "(W)"; }
                }
            },
            y2: {
                show: true,
                tick: {
                    format: function (d) { return d + "(%)"; }
                }
            }
        },
        point: {
            r: 0,
            focus: {
                expand: {
                    r: 4
                }
            }
        },
        legend: {
            position: 'inset',
            inset: {
                anchor: 'bottom-right',
                x: -30,
                y: -75,
                step: 1
            }
        },
        padding: {
            bottom: 15,
            left: 25,
            right: 35
        },
        grid: {
            x: {
                show: true
            },
            y: {
                show: true
            }
        }
    });
.chart__container {
  max-width: 1024px;
  margin: 0 auto;

    .c3-tooltip-container {
        box-shadow: 0px 0px 5px 0 hsla(0, 0%, 0%, .3);
    }

    .c3-axis {
        fill: black;
    }

    .domain {
        stroke: black;
    }

    .c3-chart-arc text {
        font-size: small;
    }

    .c3-legend-background {
        stroke-width: 0;
    }

    .c3-grid line {
        stroke: #eaeaea;
        stroke-dasharray: 0;
    }

    .c3-tooltip {
        border: none;

        tbody {

            th {
                background-color: black;

                &:first-of-type {
                    border-top-left-radius: 3px;
                }

                &:last-of-type {
                    border-top-right-radius: 3px;
                }
            }

            td {
                border-color: hsl(0, 0%, 84%);
            }

            > tr:last-of-type > td {

                &:first-of-type {
                    border-bottom-left-radius: 3px;
                }

                &:last-of-type {
                    border-bottom-right-radius: 3px;
                }
            }
        }
    }
}
<head>
  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.7.15/c3.min.css">
</head>
<body>
  <main>
    <div id="PowerChart" class="chart__container"></div>
  </main>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.15.0/d3.min.js" charset="utf-8"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.7.15/c3.min.js"></script>
</body>