我正在使用Plottable.js在我的页面上绘制图表。 我想在调整窗口大小时调整图表的大小。
我尝试通过css(以及svg width和height属性)设置大小但没有成功。
这是我尝试通过svg属性设置:
$('#svgSample').attr('width', w);
$('#svgSample').attr('height', h);
这是我尝试通过css设置:
$('#svgSample').css({
'width': w + 'px',
'height': h + 'px'
});
有什么想法吗?
由于
答案 0 :(得分:3)
我相信您需要做的就是在设置svg属性后调用Plot.redraw()
这是一个例子:
window.onload = function() {
var data = [
{ x: 1, y: 1 },
{ x: 2, y: 1 },
{ x: 3, y: 2 },
{ x: 4, y: 3 },
{ x: 5, y: 5 },
{ x: 6, y: 8 }
];
var xScale = new Plottable.Scales.Linear();
var yScale = new Plottable.Scales.Linear();
var plot = new Plottable.Plots.Scatter()
.addDataset(new Plottable.Dataset(data))
.x(function(d) { return d.x; }, xScale)
.y(function(d) { return d.y; }, yScale);
plot.renderTo("#chart");
$('#chart').attr('width', 500);
$('#chart').attr('height', 400);
plot.redraw();
}

</style> <link rel="stylesheet" type="text/css" href="https://rawgithub.com/palantir/plottable/develop/plottable.css"> <style type="text/css">
body { background-color: #AAA; }
svg { background-color: #FFF; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="https://rawgithub.com/palantir/plottable/develop/plottable.js"></script>
<svg id="chart" width="100" height="100"></svg>
&#13;
答案 1 :(得分:-1)
使用CSS,您可以使用CSS&#34;重要&#34;覆盖宽度。财产
Ex:宽度:100%!重要;将此应用于您的div并尝试
答案 2 :(得分:-2)
感谢Zoe,我修改了我的代码以响应重新调整窗口大小。
var data = [
{ x: 1, y: 1 },
{ x: 2, y: 1 },
{ x: 3, y: 2 },
{ x: 4, y: 3 },
{ x: 5, y: 5 },
{ x: 6, y: 8 }
];
var xScale = new Plottable.Scales.Linear();
var yScale = new Plottable.Scales.Linear();
var xAxis = new Plottable.Axes.Category(xScale, "bottom");
var yAxis = new Plottable.Axes.Numeric(yScale, "left");
var plot = new Plottable.Plots.Bar()
.addDataset(new Plottable.Dataset(data))
.x(function(d) { return d.x; }, xScale)
.y(function(d) { return d.y; }, yScale);
var chart = new Plottable.Components.Table([
[yAxis, plotBar],
[null, xAxis]
]);
chart.renderTo("svg#svgSample");
window.addEventListener("resize", function () {
plot.redraw();
});
如您所见,我甚至不用担心在css中设置宽度和高度。我认为Plottable在调用plot.redraw()时会处理它。
谢谢佐伊!