gpt4 book ai didi

python - matplotlib 中的轮廓未绘制指定数量的轮廓

转载 作者:行者123 更新时间:2023-12-04 13:23:42 26 4
gpt4 key购买 nike

我在循环中生成一些数据,并喜欢将它们绘制为等高线图。每个图都应使用相同的颜色图和指定数量的等高线级别。此外,第一级颜色应该是白色。

以下代码段生成的图类似于我目前面临的问题:

import numpy as np
import matplotlib.pyplot as plt

x = y = np.linspace(-3, 3, 200)
data = 1800*np.exp(-(x[newaxis, :].T**2 + y**2))

plt.figure(1000)
plt.clf()

plt.contourf(x, y, data, 8, cmap=plt.cm.OrRd)
plt.axes().set_aspect("equal")
plt.colorbar()
plt.contour(x, y, data, 8, colors='k')

enter image description here

我注意到有 9 个而不是 8 个轮廓级别,这似乎取决于数据的最小值/最大值。因此,由于数据发生变化,我在循环中生成的图形中的轮廓级别数不相同。我可以使用哪种颜色映射使第一级为白色?我知道有无数关于颜色图的问题。但他们倾向于手动生成颜色图。我只想使用这个现有的,然后添加白色作为第一种颜色,或者以某种方式修改我的脚本,使其以白色开头(我认为无论如何都会如此)。

最佳答案

levels参数在 .contourf .contour , 指定级别数。 IE。对于等高线图,这是您获得的线数,对于等高线图,这比不同颜色区域的数量少一。例如,如果您选择一个级别,则会得到一条线和两个彩色区域。
enter image description here
要将白色作为第一种颜色,您需要选择实际上将白色作为第一种颜色的颜色图(请注意,OrRd 中没有白色)。看着colormap reference ,这样的 map 将例如是相反的 afmhot .当然,您也可以构建以白色为第一颜色的自定义 map 。
选择颜色图中相应范围的颜色,使其采用级别之间间隔中间的颜色。即使对于第一级,这也会导致非白色。为了克服这个问题,可以选择使用 N+1 生成颜色图。来自给定颜色图中的颜色,这样颜色在间隔内是恒定的,并且平均值仍然与起始颜色相同。

levels = 8
cmap= plt.cm.get_cmap("afmhot_r", levels+1)
plt.contourf(x, y, data, levels, cmap=cmap)
产生:
enter image description here

关于python - matplotlib 中的轮廓未绘制指定数量的轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44669616/

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