javascript - c3.js如何将y标签放置在水平条形图中的条形内?

标签 javascript d3.js svg c3.js

我正在制作水平条形图,y 标签有点长(它们占据了移动 View 中一半的空间)。

我想知道是否可以移动条内的标签。

这就是我所拥有的 enter image description here

var chart = c3.generate({
                bindto: '#IndivisualScore',
                bar: {
                    width: 15,
                    space: 2
                },
                padding: {
                    left: 100
                },
                color: {
                    pattern: ['#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62' ]
                },
                data: {
                    x: 'x',
                    columns:
                        [
                      ['x', "Initiative", "Sees and Acts on opportunities", "Persistence", "Information seeking", "Concern for high Quality of work","Commitment to Work Contract","Efficiency Orientation","Systematic Planning","Problem Solving","Self-confidence","Assertiveness","Persuasion","Use of influence Strategies"],
                      ['value', 300, 400,245,342,532,213,452,344,123,533,234,231,324]
                      ],

                    type: 'bar',
                    color: function(inColor, data) {
                        var colors = ['#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62', '#ACB6DD','#FABF62' ];
                        if(data.index !== undefined) {
                            return colors[data.index];
                        }

                        return inColor;
                    },
                    labels: true
                },
                axis: {
                    rotated: true,
                    x: {
                        type: 'category'
                    }
                },
                tooltip: {
                    grouped: true
                },
                legend: {
                    show: true
                }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.9/c3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="IndivisualScore"></div>

最佳答案

基本解决方案是将变换应用于所有标签:

.c3-text {
    transform: translateX(-25px);
    fill: #000 !important; /* to make them visible */
}

参见this fiddle .

更高级的解决方案可能是测量每个标签的宽度并单独设置 translateX 值。

关于javascript - c3.js如何将y标签放置在水平条形图中的条形内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50919582/

相关文章:

javascript - 为什么带括号的 string.match(/(regexp)/) 返回匹配两次?

d3.js - 这会被认为是惯用的 ClojureScript 吗?

javascript - D3js 将路径 `d` 属性绑定(bind)到数据

javascript - 无法理解为什么函数不断在 d3.js 上被调用

javascript - d3 强制拖动布局上的多个拖动功能

javascript - 如何通过单击命令将一个 SVG 路径元素变形为另一个?

PHP - 动态创建带有嵌入字体的 svg

javascript - D3.js 输入/更新/退出未按预期添加元素

javascript - 在继续下一项之前,如何在 for 循环中为一项运行函数?

javascript - 正则表达式返回整个单词匹配结果