我想從某些數據文件中製作等高線圖。我遇到的麻煩是我想要顏色欄上的最小值以下的z值與最小值的顏色相同。 當使用例如線性比例尺時,這很容易。 contourf
的extend="both"
選項,或者使用cmap.set_under()
作爲顏色映射。不幸的是,在使用logscale時,這些選項都不起作用。任何人都可以提出一個解決方法?我只是想擺脫在下面的圖中的白色區域:Python:在contourf圖中設置零值顏色,其中需要日誌比例顏色條
#!/usr/bin/env python
import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate
from matplotlib import colors, ticker, cm
from matplotlib.colors import LogNorm
N = 100 #number of points for plotting/interpolation
y, x, z = np.genfromtxt(r'40Ca_208Pb_39K_Ex_115deg.dat', unpack=True)
xi = np.linspace(x.min(), x.max(), N)
yi = np.linspace(y.min(), y.max(), N)
zi = scipy.interpolate.griddata((x, y), z, (xi[None,:], yi[:,None]), method='linear')
hfont = {'fontname':'Palatino'}
fig = plt.figure(facecolor="white")
zi = np.ma.masked_less(zi, 1e-7)
plt.contourf(xi, yi, zi,levels=[1e-7,1e-6,1e-5,1e-4,1e-3,1e-2,1e-1],cmap=plt.cm.jet,norm = LogNorm())
plt.xlabel("$E_{x}$")
plt.ylabel("$E/V_{B}$")
plt.colorbar()
plt.show()
如果您認爲'set_under'不能正常工作,您需要提供問題的[mcve]。在這裏,您只是屏蔽要繪製的數組,因此掩蓋的部分根本不會被繪製。您不能將任何顏色設置爲未繪製的顏色。另一方面,您可以簡單地將軸的背景顏色更改爲您喜歡的顏色。 – ImportanceOfBeingErnest