gpt4 book ai didi

python - Matplotlib 轮廓图有 3 种颜色

转载 作者:行者123 更新时间:2023-12-01 03:42:56 27 4
gpt4 key购买 nike

我想用 3 种不同的颜色绘制等高线图。到目前为止,我的代码如下所示:

import numpy as np
import matplotlib.pyplot as plt

xMin = 0
xMax = 3
xList = np.linspace(xMin, xMax, 10)
X1, X2 = np.meshgrid(xList, xList)
Z = []
# do some processing with Z
# Z now contains 0, 0.5 or 1, e.g. Z = [0, 0, 0, 1, 1, 0.5, 1, 0.5...]
Z = Z.reshape((len(X1), len(X2)))
plt.contourf(X1, X2, Z,alpha=0.5)

现在我想绘制每个轮廓,其中 Z = 0 为红色,Z = 0.5 为绿色,Z = 1 为蓝色。我不想在红/绿/蓝之间实现平滑过渡,而只是一个颜色切换。我尝试了颜色和级别选项,但它并没有真正达到预期的效果。

等值线图是正确的方法吗?

最佳答案

您可以使用颜色选项控制等值线图的颜色,但您可能希望使用 imshow 来避免在级别之间进行插值。您可以使用ListedColormap为具有离散级别的imshow创建颜色图。 .

data = 0*np.ones((20,20))
data[5:15,5:15] = 0.5
data[7:12,8:16] = 1

# contourf plot
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax1.contourf(data, [0,0.4,0.9], colors = ['r','g','b'])
ax1.set_aspect('equal')
ax1.set_title('contourf')

# imshow plot
ax2 = fig.add_subplot(2,2,2)
# define colr map
cmap = colors.ListedColormap(['r','g','b'])
bounds = [0, 0.4,0.6, 1.1]
norm = colors.BoundaryNorm(bounds, cmap.N)

ax2.imshow(data, interpolation = 'none', cmap=cmap, norm=norm)
ax2.set_title('imshow')

enter image description here

关于python - Matplotlib 轮廓图有 3 种颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39272675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com