Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript C3分组条形图间隙_Javascript_Html_Css_D3.js_C3.js - Fatal编程技术网

Javascript C3分组条形图间隙

Javascript C3分组条形图间隙,javascript,html,css,d3.js,c3.js,Javascript,Html,Css,D3.js,C3.js,我有一个关于C3 Javascript库的问题 我有一个条形图,它有组,所以它显示为一个带有多种颜色段的条形图。当我用黑白打印时,我想让它看起来更漂亮,我的同事不想修改配色方案,所以我的下一个想法是在条形图的每个部分之间增加大约2个像素的间距 在过去的五六天里,我搜索了所有C3示例,堆栈溢出,并尝试了一系列D3技巧,我真的被这一个困住了 我尝试过的一些方法是将变换/样式应用于创建图形分段的实际路径元素。到目前为止,我尝试过的样式(如边距或填充)中没有一种得到尊重,我认为这可能只是我所读到的路径元

我有一个关于C3 Javascript库的问题

我有一个条形图,它有组,所以它显示为一个带有多种颜色段的条形图。当我用黑白打印时,我想让它看起来更漂亮,我的同事不想修改配色方案,所以我的下一个想法是在条形图的每个部分之间增加大约2个像素的间距

在过去的五六天里,我搜索了所有C3示例,堆栈溢出,并尝试了一系列D3技巧,我真的被这一个困住了

我尝试过的一些方法是将变换/样式应用于创建图形分段的实际路径元素。到目前为止,我尝试过的样式(如边距或填充)中没有一种得到尊重,我认为这可能只是我所读到的路径元素的性质,我能够得到尊重的翻译和缩放,但在获得我想要的结果时遇到了问题:

使用scale时,所有元素都会挤压在一起,它们不会在页面上保留它们的实际尺寸,因此只会使整个图形变小(而不是缩放)。有了翻译,我想我可以让它和D3一起工作。每个D3都有不同的翻译,但所有这些显然都不起作用,因为它们都在移动。我只是在寻找一个优雅的解决方案,但如果没有更好的方法,我愿意为这个解决方案付出时间。到目前为止,我还没有找到D3或C3的解决方案

我不太关心数据表示的轻微失真(即,将每个元素缩小2个像素,与其他元素的大小无关,因为它实际上只是一个相对/近似的可视化

    this._graph = c3.generate({
        bindto: '#graph',
        size: {
            height: 280
        },
        data: {
            x: 'comparisons',
            rows: graphData,
            type: 'bar',
            groups: [
                ['time1','time2','time3']
            ],
            colors: {
                'color1': this._green,
                'color2': this._pink,
                'color3': this._blue
            },
            labels: false,  //use to remove data labels
            order: null
        },
        transition: {
            duration: 0
        },
        onresized: function() {
            d3.selectAll("#graph .c3-texts .c3-text").each(function() {
                d3.select(this).style('fill', 'black');
            });
        },
        axis: {
            x: {
                type: 'category',
                tick: {
                    outer: false,
                    centered: true
                }
            }, 
            y: {
                show: false
            }
        },
        bar: {
            width: {
                ratio: 0.75
            }
        },
        legend: {
            position: 'bottom'
        },
        tooltip: {
            show: false
        },
        transition: {
            duration: 0
        }
    });  

正如我所说的,我能够找到的唯一解决方案是使用D3选择路径元素,并应用一个函数,该函数在父上下文中引用一个变量,并应用每次递增平移的转换,但这显然不是一种理想的方法

我为我的无知提前道歉,我更像是C++和裸露的开发人员,我对JavaScript非常陌生。 谢谢,
-R

我认为最简单的解决方案是在打印时应用边框。这假设您对打印事件有一定的控制权,并且能够在它实际打印之前拦截它并应用样式。这是否违反了“不修改配色方案”的规定?绝对没有违反它,我一直在考虑在表单中添加一个打印按钮,可以应用样式并为用户启动打印对话框。我仍然对其他解决方案感兴趣,但我认为这是一种可能性。