ラベルの表示で、部分的に色を変えたいというのはできますか?

1,366 views
Skip to first unread message

QGIS初心者

unread,
Feb 16, 2021, 9:12:12 PM2/16/21
to QGIS初心者質問グループ
お世話になります。
ラベルを表示しているときに、一部の文字の色を変えたいという事は、可能でしょうか?

現在、ラベルを表示させるときに、
”判定"||'-'||"名称"
という具合でラベル表記を実施しております。
そこで、
"判定"が
OKならOKのみを青文字
NGならNGのみを赤文字
DefならDefのみを緑文字
としたいです。

イメージは
OK-No.1
NG-No.2
def-No.3

といった具合です。

何か良い方法はありますでしょうか?

サンプルファイルを添付します。

sample.zip

福岡

unread,
Feb 17, 2021, 2:52:28 AM2/17/21
to QGIS初心者質問グループ
QGIS初心者 様

こんにちは

とりあえずの思いつきですが、判定と名称を別のラベルにして位置調整するという方法を考えました。
ファイルを添付しますので、参考になれば幸いです。

sample.zip

ありた

unread,
Feb 17, 2021, 10:11:47 AM2/17/21
to QGIS初心者質問グループ
こんにちは

ラベルのテキストの「HTML フォーマットを使う」にチェックを入れ、
値として QGIS 式で、たとえば下記のような式を指定してみてください。
(目的により条件式は適宜修正してください。)

CASE
WHEN "判定"='OK' THEN
  '<font color="blue">OK</font>'
WHEN "判定"='NG' THEN
  '<font color="red">NG</font>'
WHEN "判定"='def' THEN
  
'<font color="green">def</font>'
END || '-' || "名称"

スクリーンショット 2021-02-18 0.09.12.png

QGIS初心者

unread,
Feb 17, 2021, 9:00:46 PM2/17/21
to QGIS初心者質問グループ
福岡様
これはかなり面白い方法だと思います。なるほど、確かに判定部分が同じ文字数の場合はすごく便利ですね。これはぜひ実践してみます。

ありた様
HTMLフォントがQGISのLTRの3.10シリーズではなかったので??と思ったのですが、さっきダウンロードした3.16にはこの機能があるのですね。
教えてください。
「判定」のセルの中に、空白がある場合なのですが、

WHEN "判定"='null' THEN
  '<font color="White">null</font>'  

のように、nullならnullを白色にしろという命令をしたのですが反映してくれません。
nullの場合はダミーで半角スペースなどを入力しておいた方が良いのでしょうか?
2021年2月18日木曜日 0:11:47 UTC+9 ありた:

sakuya_izayoi

unread,
Feb 17, 2021, 9:12:57 PM2/17/21
to QGIS初心者質問グループ
izayoiです。
実際に、データにnull値が入ると、私の場合はすっごく扱いにくいので、いつも、nullなら半角スペースに置き換えたフィールドを一つ作っちゃいます。
今回のデータを見ていると、「No.4」は「-N0.4」のようにしたくないと見受けました。そのため、もう一列、「-No.1」 「-No.2」 「-No.3」 「No.4」となるようなフィールドを作ってやってから、ありたさまの式を当て込んだ方が楽かもしれません。(Case when式でできるのでたぶん大丈夫かと。できない場合はまたメッセージお願いします)

サンプルファイルを送ります。ご参考になれば。
2021年2月18日木曜日 11:00:46 UTC+9 QGIS初心者:
sample2.zip

ありた

unread,
Feb 18, 2021, 7:37:57 AM2/18/21
to QGIS初心者質問グループ
HTML フォーマットって最近追加された機能だったのですね。

WHEN "判定"='null' THEN という条件式は「判定属性」が「 null 」という
文字列かどうかを判定しているので、 NULL に対しては当然偽となります。

NULL を判定するときは "判定" IS NULL をします。
また空文字列を判定するときは "判定" = '' とします。
NULL と空文字列は別物なので、念の為次のようにするとよいでしょう。

CASE
WHEN "判定" IS NULL OR "判定" = ''
    '<font color="white">null</font>'
END

繰り返しになりますが、式は目的に応じて調整してください。たとえば
ハイフンの有無が判定によって変化するのであれば次のようにするのもよいでしょう。
CASE
WHEN "判定" = 'OK'
    '<font color="blue">OK</font>-'
END || "名称"


Reply all
Reply to author
Forward
0 new messages