gpt4 book ai didi

python - matplotlib 中的 pcolor

转载 作者:行者123 更新时间:2023-12-01 06:06:26 26 4
gpt4 key购买 nike

我在 matplotlib 中使用 pcolor。我使用三维数组作为输入。我想安排第三个数组以对数刻度显示。有没有办法做到这一点?如果我在绘制第三个数组之前对其取对数,则子值将变为负值,并且 pcolor 不再起作用。

最佳答案

假设您的第三个维度的数据都是正数(因为负数的对数未定义),那么您使用 pcolor 绘制此图应该不会有任何问题(注意:Matplotlib 文档建议pcolormesh 而不是 pcolor)。此时,我将提请注意帖子的编辑历史记录,其中显示“sub one”过去常说“subzero”,这会产生 NaN;我稍后会解决这个问题。正如当前版本所说,小于 1(且大于 0)的数字的对数为负数。您提到使用 pcolor 绘制负数时遇到问题,但这不会影响任何内容。

假设为正数,下面的代码应该可以工作。

import numpy as np
import matplotlib.pyplot as plt

plt.close("all")

N = 20
x = np.linspace(0, 1, N)
y = np.linspace(0, 1, N)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y + 0.1

data = np.stack((X, Y, Z), axis=0)

fig, ax = plt.subplots()
p = ax.pcolor(data[0], data[1], np.log(data[2]))
fig.colorbar(p, ax=ax, label="ln(z)")
ax.set_xlabel("x")
ax.set_ylabel("y")

如果我们考虑原始文本,则使用 np.log 表示负数将产生 NaN,如前所述。将我们的 Z 定义切换为 Z = X**2 - Y + 0.1,我们会收到警告。

RuntimeWarning: invalid value encountered in log
p = ax.pcolor(data[0], data[1], np.log(data[2]))

这仍然会生成一个绘图,但数据为 NaN 的位置将不会被绘制。

版本:

  • Python:3.10.9
  • Matplotlib:3.7.0
  • NumPy:1.23.5

关于python - matplotlib 中的 pcolor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777776/

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