Scatter() 至少接受 2 个参数(给定 1 个)
Scatter() takes at least 2 arguments (1 given)
我是新手,我正在尝试将结构化数组 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 there. Matplotlib does not know what to do with it. As given in the documentation for matplotlib.pyplot.scatter()
,您需要指定两个输入数组 x
和 y
。
从 dtype
输出中,我了解到您的结构化数组具有 'x'
、'y'
、'z'
、'velx'
、[=20 的值=]、'velz'
和 'm200'
。我不知道它们是什么,但为了创建散点图,您需要指定两个组件,例如:
plt.scatter(data['x'], data['y'])
假设'm200'
应该映射到散点的宽度,你可以使用:
plt.scatter(data['x'], data['y'], s=data['m200'])
plt.scatter
至少需要两个参数(错误说明得很清楚)。
如果你查看文档 (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter),你会看到这个签名:
scatter(x, y, s=20, c=None, marker='o', cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
因此您至少需要为每个 x
和 y
值提供一个数组:
plt.scatter(data['x'], data['y'])
从matplotlib 1.5开始,你也可以使用这个语法
从结构化数组访问数据:
plt.scatter('x', 'y', data=data)
我是新手,我正在尝试将结构化数组 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 there. Matplotlib does not know what to do with it. As given in the documentation for matplotlib.pyplot.scatter()
,您需要指定两个输入数组 x
和 y
。
从 dtype
输出中,我了解到您的结构化数组具有 'x'
、'y'
、'z'
、'velx'
、[=20 的值=]、'velz'
和 'm200'
。我不知道它们是什么,但为了创建散点图,您需要指定两个组件,例如:
plt.scatter(data['x'], data['y'])
假设'm200'
应该映射到散点的宽度,你可以使用:
plt.scatter(data['x'], data['y'], s=data['m200'])
plt.scatter
至少需要两个参数(错误说明得很清楚)。
如果你查看文档 (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter),你会看到这个签名:
scatter(x, y, s=20, c=None, marker='o', cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
因此您至少需要为每个 x
和 y
值提供一个数组:
plt.scatter(data['x'], data['y'])
从matplotlib 1.5开始,你也可以使用这个语法 从结构化数组访问数据:
plt.scatter('x', 'y', data=data)