jQueryのjqPlotプラグインで作る複数系列の凡例付き折れ線グラフにおいて、jQuery UIのResizableを併用し、ドラッグ&ドロップで、サイズを変更できるようにする方法。
実装例(サンプル)
実装例(サンプル)の動作について
グラフを囲む実線の四角の右下をドラッグ&ドロップすることで、線グラフ全体のサイズを変更することができる。
実装例(サンプル)のソースコード
読み込み
パスは、それぞれ、アップロードした場所を指定する。
<script language="javascript" type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script language="javascript" type="text/javascript" src="ui/jquery-ui-1.8.12.custom.min.js"></script>
<link rel="stylesheet" href="ui/themes/base/jquery.ui.all.css">
<!--[if lt IE 9]>
<script language="javascript" type="text/javascript" src="plugin/jqPlot/excanvas.min.js"></script>
<![endif]-->
<script language="javascript" type="text/javascript" src="plugin/jqPlot/jquery.jqplot.min.js"></script>
<link rel="stylesheet" type="text/css" href="plugin/jqPlot/jquery.jqplot.min.css" />
<script language="javascript" type="text/javascript" src="ui/jquery-ui-1.8.12.custom.min.js"></script>
<link rel="stylesheet" href="ui/themes/base/jquery.ui.all.css">
<!--[if lt IE 9]>
<script language="javascript" type="text/javascript" src="plugin/jqPlot/excanvas.min.js"></script>
<![endif]-->
<script language="javascript" type="text/javascript" src="plugin/jqPlot/jquery.jqplot.min.js"></script>
<link rel="stylesheet" type="text/css" href="plugin/jqPlot/jquery.jqplot.min.css" />
読み込むファイル。
- jquery-1.7.1.min.js
- jquery-ui-1.8.12.custom.min.js
- jquery.ui.all.css
- jquery.jqplot.min.js
- jquery.jqplot.min.css
JavaScript
<script>
jQuery( function() {
Tarou = [ [ 1, 65 ], [ 2, 72 ], [ 3, 74 ], [ 4, 63 ], [ 5, 85 ], [ 6, 90 ] ];
Hanako = [ [ 1, 83 ], [ 2, 81 ], [ 3, 79 ], [ 4, 88 ], [ 5, 78 ], [ 6, 96 ] ];
Ichirou = [ [ 1, 81 ], [ 2, 86 ], [ 3, 71 ], [ 4, 69 ], [ 5, 90 ], [ 6, 82 ] ];
var samplePlot = jQuery . jqplot(
'jqPlot-sample',
[
Tarou, Hanako, Ichirou
],
{
series: [
{ label: '太郎' },
{ label: '花子' },
{ label: '一郎' }
],
legend: {
show: true,
placement: 'outside',
location: 'ne',
}
}
);
jQuery( "#resizable" ) . resizable( {
minHeight: 150,
minWidth: 250,
maxHeight: 500,
maxWidth: 600,
} );
jQuery( '#resizable' ) . bind( 'resize', function( event, ui ) {
jQuery( '#jqPlot-sample' ) . height(
jQuery( '#resizable' ) . height() * 1
);
jQuery( '#jqPlot-sample' ) . width(
jQuery( '#resizable' ) . width() * 1
);
samplePlot . replot( { resetAxes: true } );
} );
} );
</script>
jQuery( function() {
Tarou = [ [ 1, 65 ], [ 2, 72 ], [ 3, 74 ], [ 4, 63 ], [ 5, 85 ], [ 6, 90 ] ];
Hanako = [ [ 1, 83 ], [ 2, 81 ], [ 3, 79 ], [ 4, 88 ], [ 5, 78 ], [ 6, 96 ] ];
Ichirou = [ [ 1, 81 ], [ 2, 86 ], [ 3, 71 ], [ 4, 69 ], [ 5, 90 ], [ 6, 82 ] ];
var samplePlot = jQuery . jqplot(
'jqPlot-sample',
[
Tarou, Hanako, Ichirou
],
{
series: [
{ label: '太郎' },
{ label: '花子' },
{ label: '一郎' }
],
legend: {
show: true,
placement: 'outside',
location: 'ne',
}
}
);
jQuery( "#resizable" ) . resizable( {
minHeight: 150,
minWidth: 250,
maxHeight: 500,
maxWidth: 600,
} );
jQuery( '#resizable' ) . bind( 'resize', function( event, ui ) {
jQuery( '#jqPlot-sample' ) . height(
jQuery( '#resizable' ) . height() * 1
);
jQuery( '#jqPlot-sample' ) . width(
jQuery( '#resizable' ) . width() * 1
);
samplePlot . replot( { resetAxes: true } );
} );
} );
</script>
jqPlotに関するオプション
- series
各系列ごとに指定する系列に関するオプション。1つ目の系列から順に、配列で指定する。
- label
- legend
凡例に関するオプション。
resizableに関するオプション
- minHeight
最小の高さを指定するオプション。初期設定値は「10」。
- minWidth
最小の幅を指定するオプション。初期設定値は「10」。
- maxHeight
最大の高さを指定するオプション。初期設定値はない。
- maxWidth
最大の幅を指定するオプション。初期設定値はない。
HTML
<div id="resizable" class="ui-widget-content" style="padding: 5px 60px 5px 5px; width: 350px;">
<div id="jqPlot-sample" style="height: 250px;"></div>
</div>
<div id="jqPlot-sample" style="height: 250px;"></div>
</div>