QGIS印刷コンポーザーでヒストグラムの凡例を作成する方法は?


14

印刷コンポーザでグラフ(ヒストグラム)を動的に作成する方法を探しているときに、このブログ投稿を見つけました。

ブログから複製したい機能は、qgis print composerで静的な長方形を描画し、この場合のフィールド値に基づいてヒストグラムのバーとしてサイズを変更することです。

したがって、凡例/ヒストグラムを作成します

このチュートリアルに従うことはできますが、a)matplotlibで必要なグラフを作成して画像をインポートする以外に簡単な方法があるか、b)この機能が将来のバージョンでqgisに組み込まれるかどうかに興味がありました。

ここに画像の説明を入力してください

回答:


8

私もそのブログ投稿を見ました、そして同じことを疑問に思いました!

JavaScriptを少し実行しても構わないのであれば、HTMLフレームD3ライブラリを使用できます。

これは私がハードコーディングした例です。QGIS式をページソースに挿入できます(QGIS 2.14以降から)

qgis print composerのd3 htmlフレームの例

私の場合、HTMLファイルをローカルに保存し、ブラウザーの開発者ツールを使用して表示するまでハッキングしました。

動作したら、ページソースを「ソース」テキストボックスに直接貼り付け、Insert an expressionボタンを使用してQGIS式(フィールド値、変数など)をドロップできるはずです。

alignleft.comからその例をまとめました。このチュートリアルは、単純なリストから棒グラフを作成する方法を示すので便利です。私が見たほとんどの例では、個別のTSVファイルを使用しています。

Bl.ocks.orgには非常に多くの例があります。

GitHubの AlignedLeftチュートリアルのコードを入手できます。

これは良いプラグインになるかもしれません...すでにいくつかのd3プラグインがありますが、試してみる機会はありませんが、一見の価値はありますか?


2

DataPlotlyのプラグインが存在してきています。

外部ツールを使用して事前に計算されたフィールドのパーセント値を使用して四角形をスケーリングする代わりに(リンクされたブログ投稿でExcelが使用されました)、DataPlotlyを使用すると、Atlas機能のヒストグラムを直接計算できます:

この回答の最後に、DataPlotlyオブジェクトの構成XMLを追加しました。

Plotlyヒストグラムでは、すべてのバーの色が同じです。個別に色付きのバーを取得するには、凡例オブジェクトをマングル(10列、すべての凡例入力テキストをスペースに置き換え、すべての間隔を削除、記号の高さと幅を慎重に調整、...)して、ヒストグラム上に配置する必要がありました「スクリーン」ブレンディングモード。

DataPlotlyを使用してもまだ機能しないものがあります

  • 軸の範囲を指定する水平バー
  • すべてのバーにラベルを付ける
  • ラベルのフォントを調整する
  • グリッド線の削除/調整

DataPlotlyプラグインは活発に開発されているため、これらの問題の一部は将来解決される可能性があります。


DataPlotly構成ファイル configuration.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataplotly>
<Option type="Map">
 <Option type="Map" name="dynamic_properties">
  <Option type="QString" name="name" value=""/>
  <Option name="properties"/>
  <Option type="QString" name="type" value="collection"/>
 </Option>
 <Option type="Map" name="plot_layout">
  <Option type="QString" name="additional_info_expression" value=""/>
  <Option type="QString" name="bar_mode" value="group"/>
  <Option type="double" name="bargaps" value="0"/>
  <Option type="bool" name="bins_check" value="true"/>
  <Option type="bool" name="legend" value="false"/>
  <Option type="QString" name="legend_orientation" value="h"/>
  <Option type="invalid" name="legend_title"/>
  <Option type="Map" name="polar">
   <Option type="Map" name="angularaxis">
    <Option type="QString" name="direction" value="clockwise"/>
   </Option>
  </Option>
  <Option type="Map" name="range_slider">
   <Option type="int" name="borderwidth" value="1"/>
   <Option type="bool" name="visible" value="false"/>
  </Option>
  <Option type="QString" name="title" value=""/>
  <Option type="invalid" name="x_inv"/>
  <Option type="double" name="x_max" value="10.5"/>
  <Option type="double" name="x_min" value="0.5"/>
  <Option type="QString" name="x_title" value=""/>
  <Option type="QString" name="x_type" value="linear"/>
  <Option type="invalid" name="xaxis"/>
  <Option type="invalid" name="y_inv"/>
  <Option type="invalid" name="y_max"/>
  <Option type="invalid" name="y_min"/>
  <Option type="QString" name="y_title" value=""/>
  <Option type="QString" name="y_type" value="linear"/>
  <Option type="QString" name="z_title" value=""/>
 </Option>
 <Option type="Map" name="plot_properties">
  <Option type="invalid" name="additional_hover_text"/>
  <Option type="int" name="bins" value="10"/>
  <Option type="QString" name="box_orientation" value="v"/>
  <Option type="bool" name="box_outliers" value="false"/>
  <Option type="bool" name="box_stat" value="false"/>
  <Option type="invalid" name="color_scale"/>
  <Option type="bool" name="color_scale_data_defined_in_check" value="false"/>
  <Option type="bool" name="color_scale_data_defined_in_invert_check" value="false"/>
  <Option type="QString" name="cont_type" value="fill"/>
  <Option type="QString" name="contour_type_combo" value="Fill"/>
  <Option type="bool" name="cumulative" value="false"/>
  <Option type="List" name="custom">
   <Option type="QString" value="IMDD15"/>
  </Option>
  <Option type="QString" name="hover_text" value="all"/>
  <Option type="QString" name="in_color" value="#000000"/>
  <Option type="bool" name="invert_color_scale" value="false"/>
  <Option type="QString" name="invert_hist" value="increasing"/>
  <Option type="QString" name="line_combo" value="Solid Line"/>
  <Option type="QString" name="line_dash" value="solid"/>
  <Option type="QString" name="marker" value="markers"/>
  <Option type="double" name="marker_size" value="10"/>
  <Option type="int" name="marker_symbol" value="0"/>
  <Option type="QString" name="marker_type_combo" value="Points"/>
  <Option type="double" name="marker_width" value="1"/>
  <Option type="QString" name="name" value="IMDD15"/>
  <Option type="QString" name="normalization" value=""/>
  <Option type="double" name="opacity" value="1"/>
  <Option type="QString" name="out_color" value="#ffffff"/>
  <Option type="QString" name="point_combo" value=""/>
  <Option type="bool" name="selected_features_only" value="false"/>
  <Option type="bool" name="show_colorscale_legend" value="false"/>
  <Option type="bool" name="show_lines" value="false"/>
  <Option type="bool" name="show_lines_check" value="false"/>
  <Option type="bool" name="show_mean_line" value="false"/>
  <Option type="bool" name="violin_box" value="false"/>
  <Option type="QString" name="violin_side" value="both"/>
  <Option type="bool" name="visible_features_only" value="true"/>
  <Option type="QString" name="x_name" value="IMDD15"/>
  <Option type="QString" name="y_name" value=""/>
  <Option type="QString" name="z_name" value=""/>
 </Option>
 <Option type="QString" name="plot_type" value="histogram"/>
 <Option type="QString" name="source_layer_id" value="london_IMD_2004_2010_2015_081015_v120160214112646566"/>
</Option>

1
DataPlotlyの素晴らしい使用!プラグインリポジトリの問題をいくつか開いて、何ができるか見てみますか?github.com/ghtmtt/DataPlotly
matteo

@matteo:完了!この非常に便利なプラグインのすべてのハードワークに感謝します!
ジェイク

DataPlotlyが多くの人に役立つことを嬉しく思います!
マッテオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.