python - Scatter() 至少接受 2 个参数(给定 1 个)

标签 python numpy matplotlib plot scatter

我是新手,我正在尝试将结构化数组 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)

最佳答案

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)

因此您至少需要为每个 xy 值提供一个数组:

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

从 matplotlib 1.5 开始,你也可以使用这个语法 从结构化数组访问数据:

plt.scatter('x', 'y', data=data)

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

相关文章:

python - 如何确保值映射到正确的增量表列?

python - 为 Python 3.3 安装 opencv

python - 根据条件舍入数组值的快速方法

python - Matplotlib 在循环中绘图时不会打开绘图窗口

python - 在python中绘制多条线

python - 由两个散点曲面之间的交点定义的曲线,以不同方式采样

python - 如何检查 pandas DataFrame 中的列值类型

python - 如何解决迭代错误期间字典更改大小?

Python - 读取具有不同分隔符的数据文本文件

python - 在 Python 中使用 Pandas 和 numpy 合并抓取的数据时遇到问题