Python 2.7 为delta x的每个阵列移动散射点

Python 2.7 为delta x的每个阵列移动散射点,python-2.7,matplotlib,scatter-plot,Python 2.7,Matplotlib,Scatter Plot,我正在试图整理一个情节,目前看起来是这样的: 我试图找出如何对每个数据集的不同dx值进行移位,以使序列的最后一项保持在中心位置(在本例中为q),而前8项(从a到h)将向左移位,最后8项向右移位(从g到p),每个偏移量不同 我有两个形状为(12,17)的数组(M和M1),用于循环中的每个项目,因此形状对应于散射点的一种颜色 import matplotlib.cm as cm import matplotlib import matplotlib.pyplot as pl

我正在试图整理一个情节,目前看起来是这样的:

我试图找出如何对每个数据集的不同dx值进行移位,以使序列的最后一项保持在中心位置(在本例中为q),而前8项(从a到h)将向左移位,最后8项向右移位(从g到p),每个偏移量不同

我有两个形状为(12,17)的数组(M和M1),用于循环中的每个项目,因此形状对应于散射点的一种颜色

    import matplotlib.cm as cm
    import matplotlib
    import matplotlib.pyplot as plt
    import numpy as np

    fig, ax0 = plt.subplots (nrows=1, ncols=1)

    months_expanded = np.zeros((12,17))  
    months = np.arange(1, 13)
    M  = np.random.rand(12,17)
    M1 = np.random.rand(12,17)
    datalist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q']

    for idx, sub in enumerate(datalist):
        for i in range(0,12):
            months_expanded[i] = np.repeat(months[i], 17)

        difference = abs(M - M1)

        ax0.scatter(months_expanded[:, idx], difference[:, idx], label = sub)                       

        colormap = plt.cm.gist_ncar                                                 
        colorst = [colormap(i) for i in    np.linspace(0,0.9,len(ax0.collections))]       
        for t,j1 in enumerate(ax0.collections):
            j1.set_color(colorst[t])

       ax0.legend(loc='center left', bbox_to_anchor=(1, 0.5))
       ax0.yaxis.grid(True)
       ax0.xaxis.grid(True)

       matplotlib.rcParams.update({'font.size': 30})
    fig.set_size_inches(20,20)
    fig.savefig(outfile, bbox_inches='tight')

可以预定义偏移并创建一组包含偏移的x值。请参阅下面说明这一点的最小示例:

import numpy as np
import matplotlib.pyplot as plt

N = 5 # This would be 17 in your case

# Create offsets
dx = np.linspace(-0.5, 0.5, N)
# Put last data set in centre
dx[N//2:] += (dx[1]-dx[0])
dx[-1] = 0.0
dx_expanded = np.repeat(dx, 12).reshape(N, 12)

# X-values to be shifted
months = np.arange(1, 13)
months_expanded = np.tile(months, N).reshape(N, 12)
months_shifted = months_expanded + dx_expanded

# Y-values
M  = np.random.rand(12,N)
M = np.linspace(1, 5, 12)
M = np.tile(M, N).reshape(N,12)

# Plot results
for idx in range(N):
  plt.scatter(months_shifted[idx], M[idx])
plt.show()
结果:

你能创建一个吗?当然,很抱歉,我还在用一种简单的方式编辑它!现在它应该工作了非常感谢你,我仍然需要为我的数据集找出它,但无论如何我真的很感谢你的帮助!