Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scatter() takes at least 2 arguments (1 given)

I'm new to this and I'm trying to represent a structured array, npy file as a scatter plot. I'm not entirely sure what my other argument should be. I was thinking that I should span out my values for x and y, but I am not sure.

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()

Inputting this outputs the error:

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

like image 279
iron2man Avatar asked Dec 12 '25 21:12

iron2man


1 Answers

plt.scatter needs at least two arguments (which the error states quite clearly).

If you look into the docs (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter), you will see this signature:

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)

So you need to provide at least an array for each x and y values:

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

Starting from matplotlib 1.5, you could also use this syntax to access data from a structured array:

plt.scatter('x', 'y', data=data)
like image 74
MaxNoe Avatar answered Dec 15 '25 10:12

MaxNoe



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!