元组索引超出散点图中的范围

时间:2019-12-24 09:08:31

标签: python matplotlib

我想散布一个两列的数据,看起来像下面的(带有打印)

0     0.195871-0.008693j  0.117586+0.001306j
1     0.219024+0.003791j  0.132911-0.007069j
2     0.271063-0.009686j -0.135223+0.007258j
3     0.279217-0.010561j  0.174209-0.004157j
4     0.194862+0.017081j  0.108965+0.007829j
...                  ...                 ...
9994  0.398795+0.035182j -0.068538+0.017619j
9995  0.540517+0.059227j -0.250704+0.027940j
9996  0.218166-0.010739j  0.131059-0.008267j
9997  0.285605+0.035444j -0.051080+0.018130j
9998  0.185130+0.009470j  0.113928+0.009426j

[9999 rows x 2 columns]

我不知道上面的j是什么意思。无论如何,我写道:

plt.xlabel('LD1')
plt.ylabel('LD2')
plt.scatter(
    X_lda.iloc[:,0],
    X_lda.iloc[:,1],
    c=1,
    cmap='rainbow')

但是它抛出:

/usr/local/lib/python3.6/dist-packages/matplotlib/axes/_axes.py in _parse_scatter_color_args(c, edgecolors, kwargs, xshape, yshape, get_next_color_func)
   4262             try:  # First, does 'c' look suitable for value-mapping?
   4263                 c_array = np.asanyarray(c, dtype=float)
-> 4264                 n_elem = c_array.shape[0]
   4265                 if c_array.shape in [xshape, yshape]:
   4266                     c = np.ma.ravel(c_array)


IndexError: tuple index out of range

1 个答案:

答案 0 :(得分:0)

颜色映射属性c不能是单个数字序列,并且只能在cmap是浮点数组时使用c。我已经小规模复制了您的数据集。您可以修改此解决方案以解决您的问题。

X_lda = pd.DataFrame({'a':np.random.rand(5) + np.random.random(5) * 1j,
                      'b':np.random.rand(5) + np.random.random(5) * 1j})

# use as sequence for color mapping
cm = np.arange(5)

然后执行以下操作:

plt.xlabel('LD1')
plt.ylabel('LD2')
plt.scatter(
    X_lda.iloc[:,0],
    X_lda.iloc[:,1],
    c=cm, cmap='rainbow')
plt.show()

enter image description here