有谁知道如何在 NVD3 图表中相对于图表本身重新定位图例?
默认情况下它在顶部,我希望它放在一边(更好地利用我的应用程序中的空间)
我想做的一个例子:
在撰写本文时(2015 年 7 月 2 日),nvd3支持将图例放在饼图的右侧。
初始化图形时,设置legendPosition
为right
。
例子:
nv.addGraph(function() {
var chart = nv.models.pieChart()
.x(function(d) { return d.label })
.y(function(d) { return d.value })
.legendPosition("right");
svg.datum(piedata).call(chart);
return chart;
});
请参阅http://nvd3-community.github.io/nvd3/examples/documentation.html#pieChart
AFAIK 没有执行此操作的选项,但您可以g
手动选择包含图例的元素并移动它,例如
d3.select(".nv-legendWrap")
.attr("transform", "translate(100,100)");
您可以通过编辑 JS 文件本身来永久更改 nvd3 图表模型的图例位置。这对于图表刷新可能比在初始化中包含定位更好。在 JS(如 multiBarChart.js 或 lineChart.js)中搜索:
g.select('.nv-legendWrap')
。.attr
之后将定义一个,将其替换为:
.attr('transform', 'translate(10,270)')
其中 10 是图例移动的 x 值,270 是移动的 y 值。
我一直在尝试用 lineChart 解决同样的问题。首先我刚刚添加了一个
d3.select('.nv-legendWrap').attr('transform', 'translate(0, 475)')
但是当您调整图表大小时,它会恢复为默认值。因此,我还复制了该行并将其添加到我的 windowResize() 函数中,该函数有效。但是,当我单击图例以隐藏/显示线条时,它会移回默认位置。
我认为最好的解决方案可能是编辑 js 文件。
似乎在制图方面没有简单的解决方案。NVD3.js 文档非常缺乏和有限。但是 D3.js 庞大且复杂……你不能同时拥有轻松和自定义,你必须放弃其中一个。
更新: 如果您只需要稍微移动它,您可以简单地执行以下操作:
chart.legend.margin({top: 0, right: 0, left: 0, bottom: 20})
关于图例的文档在这里: http: //nvd3-community.github.io/nvd3/examples/documentation.html#legend
举个例子:
chart.legend.rightAlign(false);
你可以调整chart.legend.margin
。它具有top
, right
, left
,bottom
作为属性。