每个强度 (Z) 数组都有单独的 x 数组。这意味着强度行不会彼此堆叠。我不希望图块“倾斜”,因此它们连接到上方和下方的行,我只希望它们在 y 方向上是直的并在 x 方向上连接。提前非常感谢!
这是一个虚拟代码:
import numpy as np
import matplotlib.pyplot as plt
y_values = np.array([0, 1, 2, 3, 4, 5], dtype=float)
x_list = range(50, 70)
x_values_list = []
z_values_list = []
for i in range(len(y_values)):
x_value_single_list = [np.array(0.01*x**2 + 0.1*x*i + 0.3 * i, dtype= float) for x in x_list]
x_values_list.append( x_value_single_list)
z_values_list.append(np.random.rand(20))
z_values_list = [np.array(arr, dtype=float) for arr in z_values_list]
x_values_list = [np.array(arr, dtype=float) for arr in x_values_list]
fig, ax = plt.subplots()
c = ax.pcolormesh(x_values_list, y_values, z_values_list, cmap='viridis') #, shading='auto'
plt.colorbar(c)
plt.show()
我尝试了很多 kwargs,但其中很多似乎没有做任何事情,并且似乎没有为 pcolormesh 实现,更适合常规线图。我显然已经尝试了很多 ChatGPT。
如果您使用平面着色,其中 x 和 y 代表每个四边形的角,那么您可以一次绘制一行。请注意,我在 pcolormesh
调用中明确设置了 vmin 和
vmax参数,以便每行的颜色范围相同,即使它们的实际最大值和最小值不同。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
y_values = np.array([0, 1, 2, 3, 4, 5], dtype=float)
x_list = range(50, 70)
for i in range(len(y_values) - 1):
x_value_single_list = [np.array(0.01*x**2 + 0.1*x*i + 0.3 * i, dtype= float) for x in x_list]
z_values = np.random.rand(1, 19) # 2D array but single row.
c = ax.pcolor(x_value_single_list, y_values[i:i+2], z_values, cmap='viridis',
shading='flat', vmin=0, vmax=1)
plt.colorbar(c)
plt.show()