★パイチャート上に数字を表示させる方法

1,169 views
Skip to first unread message

たかたか

unread,
Feb 21, 2019, 5:30:28 AM2/21/19
to QGIS初心者質問グループ

お世話になります。


生物の調査結果を、QGISで図面化しているのですが、以下の作業がどうしてもうまくいかず。。涙

(昔の業者が作成したレポートでは、うまく出来ている。。)


作成イメージを添付します。


1.パイチャート上に「合計数」を表示させたい・・

 A.オス・メス・性別不明等の区分別に、捕獲数の内訳を色分けして、円グラフ(パイチャート)で表示させています。

 B.さらに、オス・メス・性別不明の合計数を、パイチャートの中心に表示させたいのですが。。

⇒Aまでは出来るのですが、Bのやり方がわからず。。


2.凡例の作り方

・上記の凡例を作成中です。

・個体数に応じて、パイチャートのサイズが変わっているよ。。

 1個体だとこの大きさ、5個体だとこの大きさ、色分けもしてるよ・・ということがわかるような凡例にしたいのですが(添付図参照)、

⇒この凡例の作り方がわからず(^_^;)


ご存知の方、教えてください!!(>_<)


1と2のどちらでも(両方でも)構いません。

どうぞよろしくお願い致します。



作成イメージ.jpg


福岡

unread,
Feb 21, 2019, 6:58:26 AM2/21/19
to QGIS初心者質問グループ
こんばんは
パイチャートは使ったことはないのですが、ちょっと試したところ合計数の表示は何とかなったと思いますので、お知らせします。

合計数はラベルで表示することになると思いますが、描画タブのところに「妨害」という項目があります。
デフォルトでは「ラベルが地物をカバーしないようにする」にチェックが入っています。
これを外すと隠れていたラベルが現れます。

表示位置の調整ですが「配置タブ」にある「データで定義された」という項目で調整してみました。
私の場合は単純に、座標Xを「$x」、座標Yを「$y」、水平を「'Center'」、垂直を「'Herf'」として試しました。

他に良い方法があるかもしれませんが、表示は一応できるようです。

たかたか

unread,
Feb 21, 2019, 9:17:04 AM2/21/19
to QGIS初心者質問グループ
こんばんは。
早速ありがとうございます!

おかげさまで、「合計数」をラベルで表示することには成功しました!

しかし、残念ながら、パイチャートの上(中心部)には表示されません(><)。
なかなか難しいですね。。

ご返信ありがとうございます。

福岡

unread,
Feb 22, 2019, 12:33:05 AM2/22/19
to QGIS初心者質問グループ
たかたか 様

前の投稿でスペルを間違っていましたので、訂正を兼ねて整列に関するパラメータをお知らせいたします。

水平:Left,Center,Right
垂直:Bottom,Base,Half,Cap又はTop

パイチャートの配置が点の上であれば、中央に配置できそうです。

sample.png

ポイントを1つしか設けていないテスト用ですが、参考のためにファイルも添付いたします。

なお、3.4.4で作成しましたので、3.x版でご覧ください。
PieChart_Test.zip

たかたか

unread,
Feb 24, 2019, 4:31:51 AM2/24/19
to QGIS初心者質問グループ
福岡様

早速ありがとうございます!
お蔭様で、いただいたファイルを使用して、水平・垂直の設定ができました。

ポイントの上には表示できたのですが(kei=合計数)、
ポイントから離して表示しているパイチャートの中心には表示してくれません。。

方法わかりますでしょうか?
(参考までに、ファイルを添付いたします)。

もしご存知でしたら、教えていただけますと大変助かります。
どうぞよろしくお願いいたします。

Pie-CHART_190224.zip

福岡

unread,
Feb 24, 2019, 10:02:39 PM2/24/19
to QGIS初心者質問グループ
たかたか 様

サンプルファイルをダウンロードして拝見いたしました。
自分の考えた手法はgeojsonではうまく行かなかったので、申し訳ありませんがShapeファイルに変換しました。
考えた手法は以下のとおりです。

ポイントの座標を属性テーブルに拾う。
パイチャート - 配置 - 座標で、属性テーブルのX,Yフィールドを指定する。
ラベル - keiの空白のとき - 配置でも同様に設定にする。

このように設定すると、編集モードでラベルの移動を使うことができます。
そしてラベルの移動後には、X,Yフィールドが修正されるので、自動的にパイチャートも付いてきます。
参考のためにファイルを添付いたしますので、よろしければご覧ください。

geojasonでは編集モード終了後に、上書き保存できませんでしたのでやむを得ずShapeにしました。
良い方法をご存じの方がいらっしゃいましたら、ご助言をよろしくお願いいたします。m(__)m
Pie-CHART_190225.zip

sakuya_izayoi

unread,
Feb 24, 2019, 10:41:00 PM2/24/19
to QGIS初心者質問グループ
福岡さま
こちらizayoiです。
geojsonですが、windows版のQGIS3.X系だと編集後の保存がうまくできない場合があります。(自分の環境ではできる時とでき無い時がある。)

①geojson編集の場合には、QGIS2.X系を使うのが安定して編集できる。
②どうしても3.X系でやりたい場合には、編集終了前に属性テーブル上で保存し、geojsonフォルダにあるgeojson.tempが消える前にコピーして、geojsonを編集終了する。コピーしたgeojson.tempはtemp部分を消して、やれば編集した状態が残ったgeojsonファイルとして入手できる。
といったことが分かっております。
特に②に関してはかなりへんてこな実施方法なので間違うと最初から編集しなおしになるので、あまりお勧めはしませんが、一応できるよという報告です。

福岡

unread,
Feb 25, 2019, 1:55:09 AM2/25/19
to QGIS初心者質問グループ
izayoi 様

情報のご提供ありがとうございます。
座標で定義したラベルの移動ですが、私の環境では2.18も編集モード終了時の上書きがうまく行かないようです。
ついでに3.6.0でも試しましたが、同様の状況でした。

geojsonを扱った経験も少ないので、もし自分の業務と仮定してgeojsonでのファイル作成がMustなら、Shape作業で得たX,Y座標をリンクでくっつけてコピーするという方法を取りそうです。

adachi

unread,
Feb 25, 2019, 2:56:47 AM2/25/19
to QGIS初心者質問グループ
たかたか様

2つめの凡例について、自動的に生成してくれる方法が思いつかなかったのでかなり力技なのですが

1. エクセルで凡例にしたい円グラフを作成
2. 円グラフをコピー、エクセル内で図として貼り付け
3. 書式→色→透明色を指定 で背景部分を透明にする、不要な枠はトリミング
4. 背景が透明になった図をコピー
5. ペイント3Dを起動、コピーした図を貼り付け
6. 「キャンパス」→「透明なキャンパス」をオン
7. 円がぎりぎり収まるようにトリミング
8. 別名で保存(pngかgif)

以下はQGISでの操作
1. プロパティ→「ダイアグラム」タブ→「凡例」タブ→「ダイアグラムサイズの凡例の要素」をクリック
2. 「凡例のシンボル」をクリック
3. 「シンプルマーカー」となっているところをクリックし、「シンボルレイヤタイプ」ドロップダウンから「ラスタ画像マーカー」を選択
4. その下にある「…」マークをクリックして先ほど作成した凡例画像を選択 → OK
5. 円サイズの区分は「マニュアルクラスサイズ」を追加して任意に設定
5. これで、添付画像のような凡例になります(今回色は適当に作ったので一致してませんが…)

他の楽なやり方もありそうですが、ご参考まで。



福岡

unread,
Feb 26, 2019, 12:12:14 AM2/26/19
to QGIS初心者質問グループ
たかたか 様

adachiさんの試みに触発されて、私もトライしてみました。
考え方は単純で、内部角60度の扇形のSVGを使えば何とかなるのではないかと安易に考えました。
SVGファイルの作成には慣れていないのでちょっと苦労しましたが、なんとか機能するものができたようです。

シンボルセレクタでSVGを60度ずつ回転させて、6つのパーツで円を作り、1つ1つに色を当てます。

SymbolSelector.png


今回もファイルを添付いたしますので、よろしければご確認ください。
Pie-CHART_190226.zip

たかたか

unread,
Feb 26, 2019, 1:13:45 AM2/26/19
to QGIS初心者質問グループ
福岡様 adachi様 izayoi様

皆様、早速、御知恵をいただき、ありがとうございます!
大変恐縮です。

別件で今作業に入れないのですが、今日・明日にでも、
皆さまからいただいた方法を是非試してみたいと思います。

また、ご報告させていただきます。
取り急ぎ、御礼申し上げます。

たかたか

unread,
Mar 5, 2019, 10:32:01 AM3/5/19
to QGIS初心者質問グループ
福岡様 izayoi様 みなさま

別案件で作業がずいぶん遅くなってしまいましたが、福岡様やizayoi 様に教えていただいた方法で、
何とか、
・パイチャートの中心部分へのラベルの表示
・パイチャートの凡例の表示
がうまくできるようになりました。
本当にありがとうございます!
とりいそぎ、今の状況をpng画像で添付します。

やはり、福岡様に教えていただいたとおり、
>geojasonでは編集モード終了後に、上書き保存できませんでしたのでやむを得ずShapeにしました。
⇒geojsonのままでは、ラベルを移動しても、編集モードを終了すると上書き保存されず、
 元の位置(ポイントの真上)に戻ってしまいました。
 ごくたまに・・うまく上書き保存できることもあるのですが、安定しませんでした。

izayoi様に教えていただいた以下の手法も試してみた結果
>geojsonフォルダにあるgeojson.tempが消える前にコピーして、geojsonを編集終了する。
>コピーしたgeojson.tempはtemp部分を消してやれば、編集した状態が残ったgeojsonファイルとして入手できる。
⇒かなりイレギュラーな方法かと思いますが、こちらの手法で何とかなりました!

ただ、tempを使うのも手間がかかるので、福岡様に教えていただいた「shpファイルへの変換」を
試してみましたが・・
以下のエラー表示
「ベクタファイルへのエクスポートが失敗しました。エラー:レイヤの作成に失敗しました (OGRエラー:Failed to create
file a1.shp: Permission denied)」
という表示が出て、変換できませんでした。。

★shpファイルへの変換は、「レイヤー」タブの「名前をつけて保存」からで合ってますでしょうか?

もう一点、
★「パイチャートの一部を、印刷レイアウト(コンポーザー)上に作成した別枠の中に表示」させることはできるでしょうか?
 ※添付の画像の中で一際大きい「87個体」のパイチャートです。
  こちらは、全区間の合計値(総捕獲数)で、左上に用意した枠の中に表示させたかったのですが、
  印刷レイアウト上で、レイヤーがそもそも違うので無理ですよね。。。(^^;
⇒何か良い方法をご存知でしたら、教えていただけると大変助かります。
 (なお、この総捕獲数のパイチャートは、画面内に入る緯度経度を適当に振って表示させており、表示後に移動させました)

よろしくお願いいたします。


2019年2月26日火曜日 15時13分45秒 UTC+9 たかたか:
A4縦_32000_A1.png

福岡

unread,
Mar 5, 2019, 7:11:57 PM3/5/19
to QGIS初心者質問グループ
たかたか 様

おはようございます。

geojsonからshapeへの変換ですが、記述なさったとおり「名前を付けて保存する」で間違いありません。
(なお3.xでは「エクスポート - 地物の保存」になります。)
そこでエラーの出る原因ですが、ファイル名だけを入力してパスを指定していないからだと思います(試してみたところ、同じエラーメッセージが出ました)。
2.18ですと「File name」という項目の右端に「ブラウズ」というボタン、3.xですと「・・・・」というボタンがありますので、これをクリックして保存するようにしてください。

地物の別枠表示ですが、すぐに思いつくのは2つです。
まず最初に思いつくのは、もうひとつ地図を追加することです。
「新規地図の追加」では複数の地図を追加できます。
2つ目としては、挿入したい地物を画像として保存・加工して画像として挿入することです。

特に支障となることが無ければ、地図の追加挿入が良いと思います。

たかたか

unread,
Mar 11, 2019, 10:20:33 AM3/11/19
to QGIS初心者質問グループ
福岡様

いつもお世話になっております。

先日教えていただいた方法で
geojsonからshapeへの変換、
地物の別枠表示 ともうまく行きました。
御礼が遅くなりまして申し訳ありません。

詳細に教えていただき、本当にありがとうございました!
大変助かりました。

これで何とか納期に間に合わせることが出来そうです(^^;)
今後ともよろしくお願い致します。


Reply all
Reply to author
Forward
0 new messages