繁体   English   中英

pyplot.contourf中的间隔级别不相等

[英]unequal interval level in pyplot.contourf

我使用plt.contourf并绘制图形,我想使用具有不同间距的关卡:

import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(10,10)*70-32 # I want my data between +/-70
levels = [-32, -16,-8, -4, -2, 0, 2, 4, 8, 16, 32]
im = plt.contourf(data, levels)
im.set_cmap('Set1')
plt.colorbar()
plt.contour(data, levels=[0], colors='black')

在此处输入图片说明

黑色轮廓是用于检查的0值线,我们可以发现轮廓f中的零值丢失。 有谁知道contourf发生了什么?

或对此问题有不同级别的建议?

非常感谢你

问题是"Set1"只有9种颜色。 因此,如果您有更多级别,则某些级别具有相同的颜色。 您可以选择具有更多离散颜色的颜色图,并使用您所拥有的级别指定一个BoundaryNorm

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors

data = np.random.rand(10,10)*70-32 
levels = [-32, -16,-8, -4, -2, 0, 2, 4, 8, 16, 32]
norm = matplotlib.colors.BoundaryNorm(levels,len(levels))
im = plt.contourf(data, levels, cmap="tab20c", norm=norm)

plt.colorbar(ticks=levels)
plt.contour(data, levels=[0], colors='black')
plt.show()

在此处输入图片说明

或者,您可以使用具有更连续色阶的色图,其余的保持不变。

import numpy as np
import matplotlib.pyplot as plt

data = np.random.rand(10,10)*70-32 
levels = [-32, -16,-8, -4, -2, 0, 2, 4, 8, 16, 32]

im = plt.contourf(data, levels, cmap="magma")

plt.colorbar(ticks=levels)
plt.contour(data, levels=[0], colors='black')
plt.show()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM