如何通过色彩图为轮廓标签着色?

问题描述 投票:1回答:1

我有一个轮廓图,我使用名为YlGn的黄绿色地图进行着色。较暗的字段上的标签看起来不太好,因为它们是黑色的。

是否有方法在使用的色彩映射的反转中为标签着色?即,将0.39标签涂成白色,将0.15标签涂成深绿色,并在其间标注相应的标签。

enter image description here

我使用CS3 = plt.contourf(X, Z, M, levels, cmap=plt.cm.YlGn, extend='both')作为填充轮廓,使用CS4 = plt.contour(CS3, colors=('k',), linewidths=(1,))作为线轮廓,最后使用plt.clabel(CS4, linewidths=2, fmt='%2.2f', colors='k', fontsize=14)作为标签。

然而,当我试图添加cmap=plt.cm.YlGn_r并将colors='k'移除到标签(扭转颜色)时,它什么也没做。

注意:此处使用的代码部分取自this documentation page,但经过一些修改以适合我的数据。

以下是在Jupyter笔记本上尝试的一些数据:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'out'

delta = 0.025
x = np.arange(1.0, 3.0, delta)
y = np.arange(1.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)
plt.figure()
CS = plt.contour(X, Y, Z, cmap=plt.cm.YlGn_r)
CS2 = plt.contourf(X, Y, Z, color='k')
plt.clabel(CS, fontsize=10,color='k')
plt.title('Simplest default with labels')
python matplotlib colors contour contourf
1个回答
2
投票

我猜你把论点混淆了contourcontourf。将反色图应用于轮廓可以正常工作。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import mlab 

delta = 0.025
x = np.arange(1.0, 3.0, delta)
y = np.arange(1.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)
plt.figure()

CS2 = plt.contourf(X, Y, Z, cmap=plt.cm.YlGn_r)
CS = plt.contour(X, Y, Z, cmap=plt.cm.YlGn)
plt.clabel(CS, fontsize=10)

plt.title('Simplest default with labels')

plt.show()

enter image description here

要为线条使用与填充相同的颜色图,但是然后对标签使用不同的颜色图,则需要手动定义颜色。但是使用现有级别可以帮助您非常有效地完成这项工作。

CS2 = plt.contourf(X, Y, Z, cmap=plt.cm.YlGn_r)
CS = plt.contour(CS2, cmap=plt.cm.YlGn_r)
plt.clabel(CS, fontsize=10, colors=plt.cm.Reds(CS.norm(CS.levels)))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.