【问题标题】:Add some gap in between legend and the chart在图例和图表之间添加一些间隙
【发布时间】:2014-07-08 06:15:17
【问题描述】:

my fiddle here,我想在顶部的图例和图表之间添加一些间隙,以便更好看。

我试过了:

d3.select(".nv-linesWrap").style("padding-top","50px");

但它没有工作。

我该如何解决这个问题?

jsFiddle

【问题讨论】:

  • 这个问题怎么跑题了??

标签: javascript css d3.js nvd3.js


【解决方案1】:

查看第 102 行中的 xTicks 属性。

.attr('transform', function(d,i,j) { return 'translate (-10, 40) rotate(-90 0,0)' });

您可以在此处平移和旋转您的比例值。

在您的情况下,只需提高第二个翻译参数的值 (40->60)。

还有一个提示: 玩转这些属性,第一个 rotateparameter 到“-45” 使它更好阅读,所以你不必每次都转头;)

//编辑(错误解决方案)

legendwrap 具有与 translate 函数相同的功能和相同的行为。 只需在第 110 行插入以下内容:

 d3.select(".nv-legendWrap")
        .style("float", "right")
        .attr("transform", "translate(0,-75)");

也许您现在必须调整放置整个图表的整个 SVG 容器的大小

//EDIT2(改进)

要调整整个图表的大小(或 margin-top+25),我使用了以下方式:只需将这部分放在你的 legendWrap 之后。

     d3.select(".nv-wrap.nv-lineChart").attr("transform", "translate(100,75)");

【讨论】:

  • 不确定我的问题是否正确。图例是顶部的指示器/控件。
  • 哦,对不起,我刚刚在上面编辑了一个可能的解决方案。
  • 这行得通,但它会将图例扔出屏幕。我尝试将相同的想法应用于实际图表,但没有奏效。
  • 是的,我看到了。 Edit2 向您展示了如何在整个图表中置顶
  • 但是就像我在问题中所说的那样,差距需要在图例和图表好友之间。
【解决方案2】:

您可以控制图表图例与图表的距离,如下所示:

chart.legend.margin({
    top: 0,
    bottom: 10,
    left: 0,
    right: 0
});

请根据需要修改顶部/底部值。

请注意,默认情况下 nvd3 使用以下值:{top: 5, right: 0, bottom: 5, left: 0}

对于在各个图例之间引入空格,没有直接的方法,因为这不受 CSS 属性控制,并且在 nvd3 本身中是硬编码的。

在 nvd3 legend.js 第 120 行:

seriesWidths.push(nodeTextLength + 128); // 28 is ~ the width of the circle plus some padding

您可以增加这个 28 的值来增加图例之间的间距。

【讨论】:

  • 对不起,这没有帮助。我在我的小提琴中对其进行了测试。
  • 上述方法本质上是在图例部分和图表可视化之间引入了空间。但是,如果我理解正确,您需要增加各个图例之间的空间。更新了我的答案。
  • 试过了。它没有任何区别。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 2014-06-22
  • 2012-12-15
相关资源
最近更新 更多