Language
ログイン
言語設定
X
English
日本語 [Japanese]
オープンデータを使ってアプリを作ろう
アプリケーションの作成と公開をサポートするサイト
お問い合わせ
HOME
チュートリアル
アプリ新規作成
アプリのFork
公開アプリ一覧
アプリ作品の情報
D3
word cloud
マニフェストスイッチ
【吉川市議選】ワードクラウドで見るマニフェスト
fullscreen
Yuichi Aoki
【マニフェストスイッチ吉川 応援企画】 立候補者を選んでマニフェストの内容をワードクラウドで見ることができるアプリです。 文章中に含まれるキーワード(名詞)のうち、たくさん出てくるものほど大きく表示します。
1
評価指数
いいね!
0
Loading...
このアプリ作品で使われているデータと同じ形式のデータを作成し、このアプリに適用することができます。
ひな形として使うファイルをリストから選択し、"Create Templete"をクリックして下さい。
アプリケーション
fullscreen
play
stop
reload
Play
JavaScript
CSS
HTML
概要
保存した実行結果
【吉川市議選】ワードクラウドで見るマニフェスト
jquery-1.11.2.min.js
http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
d3.v3.min.js
d3.layout.cloud.js
【吉川市議選】ワードクラウドで見るマニフェスト
【吉川市議選】ワードクラウドで見るマニフェスト
【吉川市議選】ワードクラウドで見るマニフェスト
【吉川市議選】ワードクラウドで見るマニフェスト
DrawWordCloud = {}; DrawWordCloud.propList = ["政治家を志した理由", "地域のありたい姿", "解決したい課題"]; DrawWordCloud.keyProp = "政治家名"; DrawWordCloud.areaProp = "対象の市区町村または都道府県"; DrawWordCloud.area = "吉川市"; DrawWordCloud.sourceURL = "http://www.maniken.jp/id#"; DrawWordCloud.manifestURL = "http://manifestoswitchyoshikawa.strikingly.com/"; DrawWordCloud.subList = []; DrawWordCloud.workID = ""; DrawWordCloud.fileName = ""; $(function(){ DrawWordCloud.loadInputData(); $("#generate").click(function() { var sub = ""; var propList = []; $("#wordcrowd, #original").empty(); if ($('#subjects').val() != "all") { sub = $('#subjects').val(); } $('.property:checked').each(function(){ propList.push($(this).val()); }); var str = DrawWordCloud.getData(DrawWordCloud.workID, DrawWordCloud.fileName, sub, propList); DrawWordCloud.analyze(str); }); }); DrawWordCloud.loadInputData = function() { var pList=[]; $.each(LinkData.getWorks(), function(workKey, workValue) { DrawWordCloud.workID = workValue; var workURl = "http://linkdata.org/work/" + workValue; var keyPropURI = "http://linkdata.org/property/" + workValue + "#" +encodeURIComponent(DrawWordCloud.keyProp); var areaPropURI = "http://linkdata.org/property/" + workValue + "#" +encodeURIComponent(DrawWordCloud.areaProp); $.each(LinkData.getFiles(workValue), function(fileKey, fileValue) { DrawWordCloud.fileName = fileValue; $.each(LinkData.getSubjects(workValue, fileValue), function(subjKey, subjValue) { $.each( LinkData.getTriplesBySubject(workValue, fileValue, subjValue), function( tripleKey, tripleValue ) { if ( tripleValue.property == keyPropURI && LinkData.getObjects(workValue , fileValue , subjValue , areaPropURI) == DrawWordCloud.area) { var subMap = {uri:subjValue, label:tripleValue.object}; DrawWordCloud.subList.push(subMap); } }); }); }); }); $.each(LinkData.getProperties(DrawWordCloud.workID, DrawWordCloud.fileName), function(propKey, propValue){ pList.push(propValue); }); DrawWordCloud.initPreference(DrawWordCloud.subList, pList); }; DrawWordCloud.initPreference = function(sList, pList){ // サブジェクトのセレクトボックス初期化 $.each(sList, function(subKey, subValue) { var $option = "<option value=\"" + subValue.uri + "\">"+ subValue.label +"</option>"; $("#subjects").append($option); }); // プロパティのチェックボックス初期化 $.each(pList, function(index, propURI) { var decode = decodeURIComponent(propURI); var sharp = decode.split("#"); var slash = sharp[sharp.length-1].split("/"); var propName = slash[slash.length-1]; $.each(DrawWordCloud.propList, function(i, prop) { if (propName == prop) { var $input = $('<input type="checkbox" />').attr({value: propURI}).attr({name: propName}).attr({class: "property"}); var $label = $('<label for="'+ propName +'">'+ propName +'</label>'); $("#properties").append($input).append($label); } }); }); }; DrawWordCloud.getData = function(work, file, sub, prop) { var originalStr=""; $.each (prop, function(i, propValue) { if (sub == ""){ $.each(DrawWordCloud.subList, function(sbjKey, subjValue) { originalStr += " " + LinkData.getObjects(work, file, subjValue.uri, propValue); }); } else { originalStr += " " + LinkData.getObjects(work, file, sub, propValue); } }); var subStr = sub.split("#"); var subValue = subStr[subStr.length-1]; var url = DrawWordCloud.sourceURL + subValue; if (sub == ""){ $("#seeManifest").attr("href", DrawWordCloud.manifestURL).text("→マニフェストを見る"); } else { $("#seeManifest").attr("href", url).text("→マニフェストを見る"); } var inputStr = originalStr.substr(0,900); // APIの字数制限対策 $("#original").append('<p id="props"><b>元の文章</b>:' + inputStr + '</p>'); return inputStr; }; DrawWordCloud.analyze = function(str) { // 日本語形態素解析API http://140note.hitonobetsu.com/apipage/mp $.ajax({ type: 'POST', url: 'http://api.hitonobetsu.com/mp/analysis', dataType: 'jsonp', crossDomain: true, data: { str: str } }) .done(function(data) { DrawWordCloud.createNounList(data); }) .fail(function() { alert("形態素解析に失敗しました。時間を置いてお試し下さい。"); }); }; DrawWordCloud.createNounList = function (data) { var list = []; var table = []; // 名詞のうち、意味のあるもののみ抽出 $.each(data, function(i, result) { if (result.part == '名詞' && result.subtyping1 != ("非自立" || "代名詞" || "接尾")) { list.push(result.surface); } }); // 頻度表作成 $.each(list, function(i, noun) { var array = {}; var counter = 0; if (!(noun == null || DrawWordCloud.checkDuplicate(table, noun) == true)) { $.each(list, function(j, value) { if (noun == value) { counter++; } }); array = {word:noun, count:counter}; table.push(array); } }); DrawWordCloud.generate(table); }; DrawWordCloud.checkDuplicate = function(array, str){ var bool = new Boolean(false); if (array.length > 0){ array.filter(function(item, index){ if (item.word == str) bool=true; }); } return bool; }; DrawWordCloud.generate = function(data) { var layout_width = 500; var layout_height = 500; var random = d3.random.irwinHall(2); var countMax = d3.max(data, function(d){ return d.count; }); var sizeScale = d3.scale.linear().domain([0, countMax]).range([10, 100]); var words = data.sort(function(a, b) { return (a.count > b.count) ? -1 : 1; // 頻出カウントで降順ソート }) .map(function(d) { return { text: d.word, size: sizeScale(d.count) //頻出カウントを文字サイズに反映 }; }); d3.layout.cloud().size([layout_width, layout_height]) .words(words) .timeInterval(10) .rotate(function() { return Math.round(1-random()) *90; }) //ランダムに文字を90度回転 .font("Impact") .fontSize(function(d) { return d.size; }) .on("end", draw) //描画関数の読み込み .start(); //wordcloud 描画 function draw(words) { var fill = d3.scale.category20(); d3.select("#wordcrowd").append("svg") .attr("width", layout_width) .attr("height", layout_height) .append("g") .attr("transform", "translate(250,250)") .selectAll("text") .data(words) .enter().append("text") .style("font-size", function(d) { return d.size + "px"; }) .style("font-family", "Impact") .style("fill", function(d, i) { return fill(i); }) .attr("text-anchor", "middle") .attr("transform", function(d) { return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")"; }) .text(function(d) { return d.text; }); } };
span.highlight {color: red;} span.propertyName {color: gray;} span.subject { color: blue; } span.object{ color: black; } body { background: white; } a, a span { text-decoration: underline; } a:hover, a span:hover { text-decoration: none; } img { width: 550px; } #subjects { margin: 20px 0; } .download { font-size:16px; font-family:Arial; font-weight:normal; -moz-border-radius:8px; -webkit-border-radius:8px; border-radius:8px; border:1px solid #74b807; padding:4px 20px; text-decoration:none; background:-webkit-gradient( linear, left top, left bottom, color-stop(5%, #89c403), color-stop(100%, #77a809) ); background:-moz-linear-gradient( center top, #89c403 5%, #77a809 100% ); background:-ms-linear-gradient( top, #89c403 5%, #77a809 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#89c403', endColorstr='#77a809'); background-color:#89c403; color:#ffffff; display:inline-block; text-shadow:1px 1px 0px #528009; -webkit-box-shadow:inset 1px 1px 0px 0px #a4e271; -moz-box-shadow:inset 1px 1px 0px 0px #a4e271; box-shadow:inset 1px 1px 0px 0px #a4e271; margin-top: 10px; } .download:hover { background:-webkit-gradient( linear, left top, left bottom, color-stop(5%, #77a809), color-stop(100%, #89c403) ); background:-moz-linear-gradient( center top, #77a809 5%, #89c403 100% ); background:-ms-linear-gradient( top, #77a809 5%, #89c403 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#77a809', endColorstr='#89c403'); background-color:#77a809; } .download:active { position:relative; top:1px; } #original { background: none repeat scroll 0 0 #eee; margin: 10px; padding: 5px 10px; width: 500px; }
<img src="http://res.cloudinary.com/hrscywv4p/image/upload/c_limit,f_auto,h_1440,q_90,w_720/v1/266220/title_yoshikawa_hw30ti.jpg" /> <div id="result"></div> <div id="fileList"> <p>(1)見たい項目にチェック(2)誰のマニフェストを見たいかプルダウンから選ぶ(3)ワードクラウドを表示</p> <div id="properties"><span>項目:</span></div> 立候補者: <select id="subjects" > <option value="all">全件(※3,000文字まで)</option> </select> <button id="generate">ワードクラウドを表示</button> <a id="seeManifest" target="_blank" href=""></a> <a id="png" href="" type="application/octet-stream" download="sample.png" class="download" style="display:none;">Dowload Image</a> </div> <div id="wordcrowd"></div> <div id="original"></div>
jquery-1.11.2.min.js
http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
d3.v3.min.js
d3.layout.cloud.js
このアプリをForkして新しいアプリを作る
ダウンロード
Fork元のアプリは更新されました.
>>see
アプリは更新されました.
>>see
ツイート
このアプリ作品をwebから探す
作者
メッセージ送信
Yuichi Aoki
Fork元のアプリ
Yuichi Aoki
's
【海老名市議選】ワードクラウドで見るマニフェスト
実行回数
382
ウェブサイト
ライセンス
http://opensource.org/licenses/mit-license.php
Fork count
1
作成日
2016年1月19日
最終更新日
2016年1月19日
Fork元のアプリ
【海老名市議選】ワードクラウドで見るマニフェスト
作者: Yuichi Aoki
更新日: 2015年11月11日
659 回実行
Forkして作られたアプリ
【熊本県知事選】ワードクラウドで見るマニフェスト
作者: Yuichi Aoki
更新日: 2016年5月24日
164 回実行
"
" コミュニティへの投稿が完了しました。投稿したアプリ作品は、コミュニティ管理者によって承認されるとコミュニティに公開されます。
エントリー先のコミュニティとカテゴリ名を選択し、「エントリー」ボタンをクリックして下さい。
チュートリアル
アプリ作品の削除をする場合は削除をクリックしてください
送信者
名前
*
E-mail
*
件名
*
メッセージ
*
アクセス認証
*
送信
キャンセル
入力データ
関連アイデア
このアプリ作品で入力データとして使われているデータ作品のリストです。
チェックボックスの選択を変更すると、入力データを変更して実行することができます。
マニフェストスイッチ政策データ(β版)
作者: Yuichi Aoki
更新日: 2017年3月18日
3186 ダウンロード
,
12 アプリケーション
manifestswitch_seisaku
自分のデータを入力する
このアプリを使ったアイデアはまだ公開されていません
アイデアを作成
ニュースフィード
linkdata.org に関するツイート