2019年9月2日 星期一

QGIS 3.4以不同填充顏色的標籤代表不同類別

在QGIS 加入Delimited text layer畫出採樣地點的分佈圖,希望依據某種分類方式,例如依據不同物種(或是親緣關係的分支)給予樣點符號的背景不同顏色, (其他圖層或是文字等element也類似)。

1. 加入新圖層Delimited text layer,匯入文字檔,如檔案 Formosana.csv的前幾行:
specimen_no,GPS_Y,GPS_X,Alt,Label_No,Label_Site,Species
16521,25.147726,121.775199,50,1,JlLG,Fsw
15859,25.138637,121.424243,420,2,XbGYS,Ffr
......

2.在 Layer Styling 點選"abc" 按鈕/ Label with "Label_No"/ 子選單Background: 打勾Draw Background/ Fill Color點右邊像選單的按鈕/ Edit,



會跳出視窗,在Expression視窗中輸入
字串例子:
case
when  "Species" = 'Fsw' then  (color_rgb(255,255,255)
when  "Species" = 'Fht' then  (color_rgb(255,255,0))
.......
else  color_rgb(192,192,192) 
end

或是另一種數字例子:

case
when  "Label_No" <=10 then  color_rgb(255,0,0)
when  "Label_No" =11 then  color_rgb(0,255,0)
when  "Label_No" >= 12 AND "Label_No" <= 20 then color_rgb(0, 0, 255)
end

修改之後Fill Color右邊像選單的按鈕會變成有顏色的ε符號。

結果如下:



註:
(1) else這一列不一定要。
(2) "Species" 是Formosa.csv裡的 Attribute Table的欄位(變數)名稱,用双引號,大小寫都認得。
(3) 'Fsw'單引號裡是該欄位裡的具體的數值或是字串,文字一定要單引號,數字不需要單引號(例如:"Label_No" >= 12),除非數字可以被視為文字(Label_No" =11)。
(4) color_rgb(r,g,b)  是RGB的色碼,只能0-255。太多顏色的話視覺上分辨不太出來,效果不佳,我常用的15個顏色參考:
黑:(0,0,0)
灰:(192,192,192)
白:(255,255,255)
紅:(255,0,0)
橙:(255,97,0)
黃:(255,255,0)
金黃:(255,215,0)
棕:(128,42,42)
暗綠:(48,128,20)
綠:(0,255,0)
淺綠:(124,252,0)
深藍:(25,25,112)
藍:(0,0,255)
青:(0,255,255)
紫:(160,32,240)

3. 其他常用的功能如改文字顏色也是一樣,在  Text子選單修改(有字母abc)。例如背景色太深色,字體可能要改成白色或是淺色。

4. fill color 的background可以改變Opacity,讓底圖透明出現一點,但是Label的顏色區別就會降低。

5. 另一種方法是一個分類類群做一個csv檔,匯入成一個新圖層,比較麻煩。

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。