解決python畫圖中colorbar設置刻度和標籤字體大小

  1. 介紹
    python很火,因爲有各種庫的支持,所以功能格外強大。在可視化方面,目前用得較多的是matplotlib.
    在基於matplotlib.pyplot畫帶色標(colorbar)的圖時候,往往爲了美觀和科研用途,需要對colorbar的Ticks(刻度) ,標籤(label)和fonddict(字體進行設置)。但是很多初學者都苦於這些東西的設置,因爲太麻煩了(別問我怎麼知道的)。以下將介紹有用的方法來解決這些問題。
import matplotlib.pyplot as plt
  1. 解決問題

下面將分兩種情況來進行介紹

情況1:當colorbar在需要額外指定時(即不能自動生成)。
這種情況最爲常見。如 plt.contourf ,plt.imshow, 等。即就是先基於plt.contourf生成圖後,再獲取該圖的句柄,再設置colorbar。畫主圖和colorbar是兩個語句。
還是舉個例子吧

  • List item
import numpy as np
import matplotlib.pyplot as plt
#設置一個隨機種子,
#生成固定數值的隨機整數數組
seed=np.random.seed(42)
data=np.random.randint(0,10,size=(10,10))

fig=plt.figure(figsize=(10,8))
#這就是所謂的第一種情況哦
h=plt.contourf(data)
cb=plt.colorbar(h)

生成的圖如下所示
在這裏插入圖片描述

  • List item

我們設置一下主圖的橫縱座標的刻度字體大小

plt.xticks(fontsize=16)
plt.yticks(fontsize=16)

在這裏插入圖片描述
看,在這種情況下,色標的刻度大小與主圖的刻度大小不符合,這是完全不符合一個合格的程序員的審美的。因此需要更改colorbar刻度字體大小。

  • List item
fig=plt.figure(figsize=(10,8))
#這就是所謂的第一種情況哦
h=plt.contourf(data)
cb=plt.colorbar(h)
cb.ax.tick_params(labelsize=16)  #設置色標刻度字體大小。
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)
font = {'family' : 'serif',
        'color'  : 'darkred',
        'weight' : 'normal',
        'size'   : 16,
        }
cb.set_label('colorbar',fontdict=font) #設置colorbar的標籤字體及其大小

在這裏插入圖片描述
這個圖是不是漂亮多啦

  • List item

當你想改變colorbar刻度數值大小時,可以採用cb.set_ticks, cb.set_ticklabels
當然你也可以獲取其刻度大小,可以用cb.get_ticks。還有cb.get_cmap可以獲取顏色屬性。

  • List item
    當你需要進行其他操作,如設置顏色,大小限制什麼的,可以自己隨意上手。

在這裏插入圖片描述

綜上,最重要的一句是 cb.ax.tick_params(labelsize=16)。其他的屬性也可以 用 cb.ax.+table鍵進行查看。

情況2:當colorbar可以在生成主圖時就自動生成時
這種情況在生成熱圖時較爲常見。
可以用seaborn來生成熱圖(heatmap)

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
seed=np.random.seed(42)
data=np.random.randint(0,10,size=(10,10))

fig=plt.figure(figsize=(10,8)) 
h=sns.heatmap(data, annot=True,fmt='d',linewidths=0.5)  

生成圖如下:
在這裏插入圖片描述
heatmap的各個參數介紹可見如下鏈接:
http://seaborn.pydata.org/generated/seaborn.heatmap.html
https://blog.csdn.net/sunchengquan/article/details/78573244
https://blog.csdn.net/m0_38103546/article/details/79935671
heatmap參數中,默認cbar=True,即默認畫出colorbar,其中cbarkws爲一個字典, 可以用來設置colorbar的一些屬性,包括 thrink, orentation等 。但是我沒有找到cbrkws可以設置哪些屬性以及怎麼設置。
因此這裏不利用cbrkws進行colorbar設置。

在這裏插入圖片描述

fig=plt.figure(figsize=(10,8))    
h=sns.heatmap(data, annot=True,fmt='d',linewidths=0.5,cbar=False) #設置不使用其默認自帶的colorbar
cb=h.figure.colorbar(h.collections[0]) #顯示colorbar
cb.ax.tick_params(labelsize=16) #設置colorbar刻度字體大小。
plt.xticks(fontsize=16)
plt.yticks(fontsize=16)

在這裏插入圖片描述
其他如標籤和刻度範圍和色標的操作同第一種情況。

參考鏈接:
https://blog.csdn.net/henkekao/article/details/72864564
https://stackoverflow.com/questions/37233108/seaborn-change-font-size-of-the-colorbar
https://stackoverflow.com/questions/34820239/seaborn-heatmap-colorbar-label-as-percentage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章