我想散布一个两列的数据,看起来像下面的(带有打印)
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
答案 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()