我试图用一些x
、y
和{contourf
图。基本上,z
值将定义绘图的颜色。
然而,我现在所处的一个区域(即对我来说重要的区域)与其他区域相比非常小(见图),所以很难看到这个特定区域(一些小的黑色“点”)。所以我在想,是否可以用另一种颜色来获得第一个级别(或者最后一个级别,因为在这个例子中它是负值),或者用一条细白线或者其他什么来勾勒它,这样人们就可以真正地看到小而重要的点了?在
我用这个代码来绘制:
import matplotlib.pyplot as plt
from matplotlib import rcParams
import matplotlib.colors as colors
import numpy as np
nx = 41
ny = 67
x = np.linspace(0.01, 1, nx)
y = np.linspace(0.01, 2, ny)
x_bc = x[:, np.newaxis]
y_bc = y[np.newaxis, :]
z = x_bc*y_bc
max_value = np.amax(z)
cmapp = plt.get_cmap('Greys')
level_intervals = [100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 8, 1.92, 0]
level_list = [max_value-i for i in level_intervals]
col_bar = plt.contourf(x, y, z.T, level_list, cmap=cmapp)
plt.xlabel('x')
plt.ylabel('y')
plt.colorbar(col_bar, cmap=cmapp)
plt.show()
我很抱歉没有提供任何真实的数据,但是我不能复制下面的图中使用的数据(在几乎黑色的部分里,实际上有一些小数量的几乎黑色的点,在几乎黑色的句子中)。但是,创建z
数据的大小和方式与上面一样。然而,在从图中得到数据之前,有很多计算工作要做。在
您可以基于现有颜色创建自定义颜色映射,并将其中一种颜色替换为红色。
然后可以使用
BoundaryNorm
将新颜色映射中的颜色用于指定级别。在根据您在下面的注释进行编辑:您可以在所需的区域/范围内限制轮廓。例如,我修改了上面示例代码中的x、y和z数据以绘制更多的等高线。然后我只选择最高幅度的轮廓线
levels = sorted(level_list)[-5:]
(这里最后5行)用红色高亮显示。尝试对您的实际数据执行此操作,并查看感兴趣区域中的点是否可见。我在下面写的只是我在你的代码中修改过的行。在输出
相关问题 更多 >
编程相关推荐