如何在Plottable.js中调整图表大小

时间:2015-10-15 06:48:06

标签: javascript html css plottable plottable.js

我正在使用Plottable.js在我的页面上绘制图表。 我想在调整窗口大小时调整图表的大小。

我尝试通过css(以及svg width和height属性)设置大小但没有成功。

这是我尝试通过svg属性设置:

$('#svgSample').attr('width', w);
$('#svgSample').attr('height', h);

这是我尝试通过css设置:

$('#svgSample').css({
    'width': w + 'px',
    'height': h + 'px'
});

有什么想法吗?

由于

3 个答案:

答案 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;
&#13;
&#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()时会处理它。

谢谢佐伊!