Repository: Qiskit/qiskit

Issue:
Bloch sphere not plotted with `Bloch.add_points` in Matplotlib 3.1.x
### Information 

- **Qiskit Terra version**: 0.9.0 and dev
- **Python version**: 3.7.3
- **Operating system**: Darwin (x86_64)

### What is the current behavior?
Update from Matplotlib 3.0.3 to Matplotlib 3.1.x breaks the `Bloch.add_points()` method in `visualization.bloch.Bloch`.

### Steps to reproduce the problem
```python
import qiskit 
b = qiskit.visualization.bloch.Bloch()
point = [0,0.3,0.2]
b.add_points(point)
b.show()
```
will throw a broadcast error, something like (exact message depends on Python vs IPython):
```python

ValueError                                Traceback (most recent call last)
/miniconda3/lib/python3.7/site-packages/IPython/core/formatters.py in __call__(self, obj)
    339                 pass
    340             else:
--> 341                 return printer(obj)
    342             # Finally look for special method names
    343             method = get_real_method(obj, self.print_method)

/miniconda3/lib/python3.7/site-packages/IPython/core/pylabtools.py in <lambda>(fig)
    242 
    243     if 'png' in formats:
--> 244         png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
    245     if 'retina' in formats or 'png2x' in formats:
    246         png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

/miniconda3/lib/python3.7/site-packages/IPython/core/pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs)
    126 
    127     bytes_io = BytesIO()
--> 128     fig.canvas.print_figure(bytes_io, **kw)
    129     data = bytes_io.getvalue()
    130     if fmt == 'svg':

/miniconda3/lib/python3.7/site-packages/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, **kwargs)
   2054                         orientation=orientation,
   2055                         dryrun=True,
-> 2056                         **kwargs)
   2057                     renderer = self.figure._cachedRenderer
   2058                     bbox_artists = kwargs.pop("bbox_extra_artists", None)

/miniconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py in print_png(self, filename_or_obj, metadata, pil_kwargs, *args, **kwargs)
    525 
    526         else:
--> 527             FigureCanvasAgg.draw(self)
    528             renderer = self.get_renderer()
    529             with cbook._setattr_cm(renderer, dpi=self.figure.dpi), \

/miniconda3/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py in draw(self)
    386         self.renderer = self.get_renderer(cleared=True)
    387         with RendererAgg.lock:
--> 388             self.figure.draw(self.renderer)
    389             # A GUI class may be need to update a window using this draw, so
    390             # don't forget to call the superclass.

/miniconda3/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     36                 renderer.start_filter()
     37 
---> 38             return draw(artist, renderer, *args, **kwargs)
     39         finally:
     40             if artist.get_agg_filter() is not None:

/miniconda3/lib/python3.7/site-packages/matplotlib/figure.py in draw(self, renderer)
   1707             self.patch.draw(renderer)
   1708             mimage._draw_list_compositing_images(
-> 1709                 renderer, self, artists, self.suppressComposite)
   1710 
   1711             renderer.close_group('figure')

/miniconda3/lib/python3.7/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    133     if not_composite or not has_images:
    134         for a in artists:
--> 135             a.draw(renderer)
    136     else:
    137         # Composite any adjacent images together

/miniconda3/lib/python3.7/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     36                 renderer.start_filter()
     37 
---> 38             return draw(artist, renderer, *args, **kwargs)
     39         finally:
     40             if artist.get_agg_filter() is not None:

/miniconda3/lib/python3.7/site-packages/mpl_toolkits/mplot3d/axes3d.py in draw(self, renderer)
    290                 sorted(self.collections,
    291                        key=lambda col: col.do_3d_projection(renderer),
--> 292                        reverse=True)):
    293             col.zorder = zorder_offset + i
    294         for i, patch in enumerate(

/miniconda3/lib/python3.7/site-packages/mpl_toolkits/mplot3d/axes3d.py in <lambda>(col)
    289         for i, col in enumerate(
    290                 sorted(self.collections,
--> 291                        key=lambda col: col.do_3d_projection(renderer),
    292                        reverse=True)):
    293             col.zorder = zorder_offset + i

/miniconda3/lib/python3.7/site-packages/mpl_toolkits/mplot3d/art3d.py in do_3d_projection(self, renderer)
    543         self.set_facecolors(fcs)
    544 
--> 545         ecs = (_zalpha(self._edgecolor3d, vzs) if self._depthshade else
    546                self._edgecolor3d)
    547         ecs = mcolors.to_rgba_array(ecs, self._alpha)

/miniconda3/lib/python3.7/site-packages/mpl_toolkits/mplot3d/art3d.py in _zalpha(colors, zs)
    845     norm = Normalize(min(zs), max(zs))
    846     sats = 1 - norm(zs) * 0.7
--> 847     rgba = np.broadcast_to(mcolors.to_rgba_array(colors), (len(zs), 4))
    848     return np.column_stack([rgba[:, :3], rgba[:, 3] * sats])
    849 

<__array_function__ internals> in broadcast_to(*args, **kwargs)

/miniconda3/lib/python3.7/site-packages/numpy/lib/stride_tricks.py in broadcast_to(array, shape, subok)
    180            [1, 2, 3]])
    181     """
--> 182     return _broadcast_to(array, shape, subok=subok, readonly=True)
    183 
    184 

/miniconda3/lib/python3.7/site-packages/numpy/lib/stride_tricks.py in _broadcast_to(array, shape, subok, readonly)
    125     it = np.nditer(
    126         (array,), flags=['multi_index', 'refs_ok', 'zerosize_ok'] + extras,
--> 127         op_flags=['readonly'], itershape=shape, order='C')
    128     with it:
    129         # never really has writebackifcopy semantics

ValueError: operands could not be broadcast together with remapped shapes [original->remapped]: (0,4) and requested shape (2,4)

<Figure size 360x360 with 1 Axes>
```
### What is the expected behavior?

Draw points on the Bloch sphere according to qubit. 

### Suggested solutions

Change the way the `plot_points` is called in Matplotlib. 




Discussion:

Resolving patch:
diff --git a/qiskit/visualization/bloch.py b/qiskit/visualization/bloch.py
--- a/qiskit/visualization/bloch.py
+++ b/qiskit/visualization/bloch.py
@@ -548,7 +548,7 @@ def plot_points(self):
                     np.real(self.points[k][2][indperm]),
                     s=self.point_size[np.mod(k, len(self.point_size))],
                     alpha=1,
-                    edgecolor='none',
+                    edgecolor=None,
                     zdir='z',
                     color=self.point_color[np.mod(k, len(self.point_color))],
                     marker=self.point_marker[np.mod(k,
@@ -566,7 +566,7 @@ def plot_points(self):
                 self.axes.scatter(np.real(self.points[k][1][indperm]),
                                   -np.real(self.points[k][0][indperm]),
                                   np.real(self.points[k][2][indperm]),
-                                  s=pnt_size, alpha=1, edgecolor='none',
+                                  s=pnt_size, alpha=1, edgecolor=None,
                                   zdir='z', color=pnt_colors,
                                   marker=marker)
 


Test patch: