簡體   English   中英

Matplotlib:使contourf顏色標簽以對數刻度和多個級別顯示

[英]Matplotlib: Getting contourf color labels to appear with logarithmic scale and many levels

我正在麻煩創建一個填充的輪廓圖,該輪廓圖既具有對數顏色縮放比例,又具有比默認選擇的顏色更多的顏色。 我基本上是嘗試遵循此示例,但是在添加更多顏色的同時,但是每當我添加更多顏色時,顏色欄上的數字就會消失(刻度仍然存在)。

我的基本代碼是

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import ticker
from matplotlib.colors import LogNorm

z = np.random.lognormal(mean=10, sigma=3, size=(10,10))

fig, ax = plt.subplots()
levels=np.logspace(np.log10(np.min(z)),np.log10(np.max(z)),100)
plot = ax.contourf(z, levels, norm=LogNorm())

cbar = fig.colorbar(plot)

plt.show()

我也嘗試過使用

plot = ax.contourf(z, levels, locator=ticker.LogLocator())

但我得到相同的結果。 有刻度線,但顏色欄上沒有數字: 在此處輸入圖片說明

另外,按照Matplotlib文檔,

plot = ax.contourf(z, 100, norm=LogNorm())

應該讓我獲得101個以對數間距排列的顏色級別,但是它默認為正常數字。

事實證明,除了為繪圖功能提供一個定位器之外,還需要為顏色欄提供一個定位器:

locator = ticker.LogLocator(base=10)
clb  = plt.colorbar(plot, format='%.e', ticks=locator)

並且,除了使用norm參數之外,我還在繪圖函數中使用了定位器,盡管除了看起來更加一致以外,它似乎沒有什么不同。

plot = ax.contourf(z, levels, locator=locator)

在此處輸入圖片說明

附帶說明一下,matplotlib的較新版本(至少為2.1.1)引入了LogFormatterSciNotation函數,該函數創建一個格式化程序對象,該對象可用於使用10 ^ x種表示法創建標簽的format參數。 不幸的是,我使用的主要版本是1.5.1,所以我需要使用上面的格式字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM