绘制相同形状的两个数据集之间的相关性

时间:2017-08-07 01:01:44

标签: python scatter-plot matplotlib-basemap

我有两个数据集array1array2,其形状与(365, 180, 140)完全相同。第一个阵列具有降水值,而第二个阵列具有大气中尘埃浓度的值。数组中的第一个元素表示日期,第二个和第三个元素表示经度和纬度。

我想在散点图上显示这两个数据集之间的相关性。我想在x轴上得到降水值,在y轴上得到尘埃浓度值。基本上,我想在array1中的每个索引处取值,将其指定为x坐标,并将array2中相应索引处的值取出,并将其指定为y值。有谁知道我怎么能做到这一点?非常感谢你。

编辑:我的意思是"每个索引"是这样的:例如,我想取array1[1, 1, 1],指定为x坐标,然后取array2[1, 1, 1],并指定为y坐标,并在散点图上绘制结果点。我想绘制[1, 2, 1][1, 3, 1][1, 4, 1],等等。

1 个答案:

答案 0 :(得分:0)

听起来您想要将array1中的每个条目与array2中的相应条目进行对比。

matplotlib中的分散函数会自动展平n维数组,所以这样的东西应该可以工作:

import matplotlib.pyplot as mp
mp.scatter(array1, array2)

您自己也可以更明确地展平数组(索引将被保留):

mp.scatter(array1.flatten(), array2.flatten())

为了提供一个完整的工作示例,这里有一些代码可以创建这些数组并绘制它们,假设降水与灰尘浓度与某些噪声负相关。注意:在matplotlib中渲染的散点图非常慢,因此对于尺寸为365x180x140,绘制可能需要一段时间。

import matplotlib.pyplot as mp
import numpy

# specify dimensions
ndays=30
nlat=20
nlon=40

# create a random array (say "precipitation") with the dimensions above
array1 = numpy.random.random((ndays,nlat,nlon))

# create another array negatively correlated with precipitation
array2 = -1*array1
# and add some noise to array2
array2 += numpy.random.normal(loc=0, scale=0.5, size=array2.shape)

mp.scatter(array1.flatten(), array2.flatten())
mp.xlabel('array1')
mp.ylabel('array2')

以下是这个图:

enter image description here