繁体   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