我对此并不陌生,我试图将结构化数组npy文件表示为散点图。我不确定我的其他论点应该是什么。我当时在想应该扩展xy的值,但是我不确定。

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

path = '/users/username/Desktop/untitled folder/python     files/MSII_phasespace/'

os.chdir( path )

data = np.load('msii_phasespace.npy',mmap_mode='r')

# data.size: 167197
# data.shape: (167197,)
# data.dtype: dtype([('x', '<f4'), ('y', '<f4'), ('z', '<f4'),
  # ('velx', '<f4'), ('vely', '<f4'), ('velz', '<f4'), ('m200', '<f4')])

plt.title ("MS II data structure")
plt.xlabel(r'$\Omega_{\mu \nu}$')
plt.ylabel(r'$\Omega^{\mu \nu}$')

plt.scatter(data)
plt.show()


输入此命令将输出错误:


  TypeError: scatter() takes at least 2 arguments (1 given)

最佳答案

您在那里有一个structured array。 Matplotlib不知道该怎么办。如documentation for matplotlib.pyplot.scatter()中所述,您需要指定两个输入数组xy

dtype输出中,我收集到您的结构化数组具有'x''y''z''velx''vely''velz''m200'的值。我不知道它们是什么,但是为了创建散点图,您需要指定两个组件,例如:

plt.scatter(data['x'], data['y'])


假设'm200'应该映射到散点的宽度,则可以使用:

plt.scatter(data['x'], data['y'], s=data['m200'])

关于python - Scatter()至少接受2个参数(给定1个),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33987451/

10-11 16:31