簡體   English   中英

Matplotlib Contourf具有3種顏色

[英]Matplotlib contourf with 3 colors

我想用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為藍色。 我不想在紅色/綠色/藍色之間平滑過渡,而只是一個顏色開關。 我試用了顏色和色階選項,但效果並不理想。

等高線圖是正確的選擇嗎?

您可以使用colors選項來控制等高線圖的顏色,但是您可能需要使用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')

在此處輸入圖片說明

暫無
暫無

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

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