javascript - c3js - 在图表中间有 X 轴

标签 javascript c3.js

X轴可以放在图的中间吗?
当 Y 值同时为负值和正值时 - 并且 X 轴位于 0 值
让我们说类似于这张图片

Screenshot

最佳答案

将 C3 x 轴定位在所需的 y 值处

<罢工>

<罢工>

方法一

<罢工> 请注意,如果您有 .load(),此方法将不起作用。 - 见方法 2。 <罢工>

<罢工>

您可以覆盖图表的 getTranslate功能来做到这一点,像这样

// get the original translate function
var originalTranslate = chart.internal.getTranslate;
chart.internal.getTranslate = function (target) {
    // if we are drawing the x axis
    if (target === 'x')
        // use the y scale to get the y position
        return "translate(" + 0 + "," + this.y(0) + ")"
    else
        // otherwise just call the original function
        return originalTranslate.apply(this, [ target ]);
}
// redraw
chart.flush();

chart 是您的 C3 图表对象


fiddle - http://jsfiddle.net/3zpyu0yx/

<罢工>

方法二

方法 1 在数据更改时不起作用 - 因为 c3 存储转换(包括轴的转换)并在重绘时使用它们。所以它永远不会调用我们更新的 getTranslate新数据的位置,我们被一个动画所困,该动画将比例定位在原始数据集的 0 位置。

解决此问题的一种方法是等待过渡完成,然后手动平移我们的轴。或者更好的是我们可以只更新 x 轴的过渡,比如 o

// select the x axis
d3.select(chart.element).select('.' + c3.chart.internal.fn.CLASS.axisX).transition()
    // and translate it to the y = 0 position
    .attr('transform', "translate(" + 0 + "," + chart.internal.y(0) + ")")

其中图表是 C3 图表对象。

当您需要图表轴更新时调用它。对于 .load() , 那将在 done 内回调。


fiddle - http://jsfiddle.net/1hrd9g3k/


enter image description here

关于javascript - c3js - 在图表中间有 X 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32427892/

相关文章:

javascript - 如何使用 jQuery show() 和 hide() 列表项 block

javascript - 使用两个指针的算法的时间复杂度。是0(n)还是0(n^2)

javascript - 避免 c3js 图上的取消选择行为

javascript - 使用 c3js 在条形图上单击事件似乎在 chrome 上中断

responsive-design - C3.js 响应式 x 轴时间序列

javascript - 选择items ids到同一行input单独保存

javascript - 将 contenteditable div 限制为可见部分

javascript - ReactJS:Express API 和 ReactJS 结构限制每行显示数据

sum - c3.js 饼图标题中的总数

javascript - 需要在子图选择上显示 X 轴标签