[英]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.