pyplot outlinef:如何使图表中的颜色连续?

kil*_*les 4 python matplotlib

当我使用时contourfmatplotlib选择将值分组为相似的区域并为这些区域着色。如何使该图显示不同值的全部范围?在下面的代码中,我希望颜色是连续的,以便小山上的太阳是逐渐增加的颜色的渐变,而不是这些颜色的突然变化。

import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.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)
Z = 10.0 * (Z2 - Z1)
CS = plt.contourf(X, Y, Z, vmin = 0., vmax = 3., cmap=plt.cm.coolwarm)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Ben*_*enT 5

一种快速的解决方法是使等高线图使用的级别非常小。不要使用vmin和vmax。

Z = 10.0 * (Z2 - Z1)
clev = np.arange(Z.min(),Z.max(),.001) #Adjust the .001 to get finer gradient
CS = plt.contourf(X, Y, Z, clev, cmap=plt.cm.coolwarm)
plt.show()
Run Code Online (Sandbox Code Playgroud)

编辑 如果只想让顶部更连续地播放轮廓级别的上下边界。

Z = 10.0 * (Z2 - Z1)
clev = np.arange(0,Z.max(),.001) #Adjust the .001 to get finer gradient
CS = plt.contourf(X, Y, Z, clev, cmap=plt.cm.coolwarm,extend='both')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


DYZ*_*DYZ 3

根据“轮廓”一词的定义,contourf绘制并填充离散轮廓。您可能需要考虑plt.imshow一下。

plt.imshow(Z, vmin = 0., vmax = 3., cmap=plt.cm.coolwarm, origin='lower', 
           extent=[X.min(), X.max(), Y.min(), Y.max()])
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述