|
发表于 2023-8-6 17:14:09
|
显示全部楼层
为什么变化了y1, y2图就不一样?
当 y1 和 y2 的取值范围发生变化时,影响了散点图中数据点的位置和分布,从而导致图形的变化。具体来说,y1 和 y2 是用来标识散点图中每个数据点的 x 坐标和 y 坐标的网格矩阵。
在图1中,通过 np.meshgrid(x1, x2) 创建的网格矩阵 y1 和 y2 分别以 x1 和 x2 的取值范围作为基准来生成。因此,图1中的散点图会根据 x1 和 x2 的范围进行绘制,x 和 y 的坐标数值是匹配的。
而在图2中,通过 np.meshgrid(x2, x1) 创建的网格矩阵 y1 和 y2 分别以 x2 和 x1 的取值范围作为基准来生成。因此,图2中的散点图会根据 x2 和 x1 的范围进行绘制,x 和 y 的坐标数值是颠倒的。
以下给出修改后的完整代码,供您参考:
- import numpy as np
- import matplotlib.pyplot as plt
- # 图1
- x1 = np.arange(1600, 2200, 1)
- x2 = np.arange(600, 1000, 1)
- z = np.random.rand(len(x1), len(x2))
- y1, y2 = np.meshgrid(x1, x2)
- plt.figure()
- plt.subplot(111)
- plt.scatter(y1, y2, c=z, cmap=plt.cm.rainbow, vmin=min(z), vmax=max(z))
- plt.colorbar()
- plt.title('图1')
- plt.show()
- # 图2
- x1 = np.arange(1600, 2200, 1)
- x2 = np.arange(600, 1000, 1)
- z = np.random.rand(len(x1), len(x2))
- y1, y2 = np.meshgrid(x2, x1)
- plt.figure()
- plt.subplot(111)
- plt.scatter(y1, y2, c=z, cmap=plt.cm.rainbow, vmin=min(z), vmax=max(z))
- plt.colorbar()
- plt.title('图2')
- plt.show()
复制代码
希望对您有所帮助!如果还有其他问题,请随时提问。
如果回答对你有帮助,请给我一个最佳答案!  
|
|