簡體   English   中英

從Seaborn / Matplotlib中的色條中刪除最低顏色

[英]Remove lowest color from colorbar in Seaborn/Matplotlib

如果我設置shade_lowest = False ,則shade_lowest = False仍包含最低級別(purple-ish)。 有沒有通用的方法來完全刪除它?

在此輸入圖像描述

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

a = np.random.normal(0, 1, 100)
b = np.random.normal(0, 1, 100)

fig, ax = plt.subplots()
sns.kdeplot(a, b, shade = True, shade_lowest = False, cmap = "viridis", cbar = True, n_levels = 4, ax = ax)

plt.show()

一個解決方案肯定不會從一開始就創建這個級別。

在這里,我們根據定位器選擇最多5個級別,並在調用contourf圖時刪除最低級別,這樣這個級別甚至不存在於第一位。 然后自動顏色欄創建工作完美無缺。

import numpy as np; np.random.seed(5)
import matplotlib.pyplot as plt
from matplotlib import ticker
from scipy import stats

x = np.random.normal(3, 1, 100)
y = np.random.normal(0, 2, 100)
X, Y = np.mgrid[x.min():x.max():100j, y.min():y.max():100j]
positions = np.vstack([X.ravel(),Y.ravel()])
values = np.vstack([x,y])
kernel = stats.gaussian_kde(values)
Z = np.reshape(kernel(positions).T, X.shape)

N=4
locator = ticker.MaxNLocator(N + 1, min_n_ticks=N)
lev = locator.tick_values(Z.min(), Z.max())


fig, ax = plt.subplots()
c = ax.contourf(X,Y,Z,levels=lev[1:])
ax.scatter(x,y, s=9, c="k")
fig.colorbar(c)

plt.show()

在此輸入圖像描述

暫無
暫無

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

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