histograms
可以看做是
line plot
的一個變種,首先來看一個示例
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZlBnauomMsF3d3oHMp52LcVTOzYzMyczLcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.jpeg)
圖中最内圈的就是
historgams
了,可以看到由許多個柱子組成,每個柱子都是
file
中定義的一個區域,柱子的高度由這個區域的
value
決定。所有的柱子共有兩個方向,一部分朝内,另外一部分朝外。
這個圖檔對應的資料如下:
可以看到
value
的值有正有負,當同時包括了正負數時,所有正數的柱子是一個方向,負數的柱子是另外一個方向。以上這些都是預設行為。
下面看一個最基本的配置檔案的例子
r0
,
r1
,
max
和
min
這些屬性在之前的文章中已經詳細解釋過,今天主要看下
histogram
獨有的幾個參數
1. extend_bin
每個
bin
的區間是在
file
檔案中事先定義好的,
extend_bin
控制是否把相鄰的
bin
連接配接起來, 比如對于下面這個資料
可以看到這3個區間是有一定間隔的,預設情況下,在圖上對應的
bin
肯定是不連續的;當設定了
extend_bin = yes
之後,會将這3個bin連在一起。
具體的做法就是延伸
file
中定義好的區間,比如前2個
bin
之間有間隔,取這個間隔的中間點的位置,作為第一個bin的終止位置,第2個bin的起始位置,這樣兩個
bin
就連接配接起來了。
看一個案例
圖中的兩個
histogram
基于相同的資料,當
extend_bin = no
時,按照
file
中定義的區間來畫,可以看到區間并不是連續的;當
extend_bin = yes
時,所有的
bin
都變成連續的了。
改變了
file
檔案中定義的區間,通常情況下, 不太推薦使用
extend_bin = yes
。
2. 顔色相關的屬性
histogram
中,和顔色相關的共有以下4個屬性
-
color
線條的顔色
- fill_color
的填充色bin
- background_color
的背景色bin
-
fill_under
當
時,fill_under = yes
作為background_color
的填充色,bin
作為線條的顔色,會覆寫fill_color
定義的值color
另外一個需要掌握的就是定義多種顔色的技巧,以最常用的
fille_color
為例,主要有兩種方式:
1. 設定多個條件
根據某個門檻值将
value
劃分成不同的部分,每個部分通過
rule
定義不同的填充色
2. 設定一個條件
condition = 1
表示這個
rule
一直發揮作用,類似程式設計中的
while(1)
, 永遠為真。這裡的
fill_color
的值通過一個表達式來定義。
remap_int
函數根據
value
在區間[-1, 1]的位置, 映射到[1,9]區間中,生成一個1到0之間的整數,然後通過
sprintf
函數定義顔色為
spectral-9-div
調色闆中的一個顔色。
spectral-9-div
這個調色闆是在
/etc/brewer.all.conf
檔案中定義的
在該檔案中,還定義了其他顔色的調色闆,中間的數字代表了調色闆中的顔色總數,可以根據需要選擇合适的調色闆。