我对此并不陌生,我试图将结构化数组npy文件表示为散点图。我不确定我的其他论点应该是什么。我当时在想应该扩展x
和y
的值,但是我不确定。
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()
中所述,您需要指定两个输入数组x
和y
。
从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/