[plot] Updating a curve with color defined for each point fails
To reproduce:
```
from silx import sx
w = sx.Plot1D()
w.show()
w.addCurve((1, 2), (1, 2), color=((1., 0., 0.), (0., 0., 1.)), symbol='o', linestyle='')
w.addCurve((1, 2), (1, 2), color=((1., 0., 0.), (0., 0., 1.)), symbol='o', linestyle='')
```

2nd `addCurve` fails with error:
```
silx/gui/plot/items/core.pyc in setColor(self, color, copy)
    567                 assert color.ndim == 2
    568 
--> 569         if self._color != color:
    570             self._color = color
    571             self._updated(ItemChangedType.COLOR)

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
```

Replacing `if self._color != color:` with `if not numpy.all(numpy.equal(self._color, color)):` solves the issue.


diff --git a/silx/gui/plot/items/core.py b/silx/gui/plot/items/core.py
index 0f4ffb971..34ac700d6 100644
--- a/silx/gui/plot/items/core.py
+++ b/silx/gui/plot/items/core.py
@@ -543,7 +543,7 @@ class ColorMixIn(object):
     def getColor(self):
         """Returns the RGBA color of the item
 
-        :rtype: 4-tuple of float in [0, 1]
+        :rtype: 4-tuple of float in [0, 1] or array of colors
         """
         return self._color
 
@@ -566,9 +566,8 @@ class ColorMixIn(object):
             else:  # Array of colors
                 assert color.ndim == 2
 
-        if self._color != color:
-            self._color = color
-            self._updated(ItemChangedType.COLOR)
+        self._color = color
+        self._updated(ItemChangedType.COLOR)
 
 
 class YAxisMixIn(object):
diff --git a/silx/gui/plot/test/testPlotWidget.py b/silx/gui/plot/test/testPlotWidget.py
index deeb19877..ccee428a6 100644
--- a/silx/gui/plot/test/testPlotWidget.py
+++ b/silx/gui/plot/test/testPlotWidget.py
@@ -371,6 +371,27 @@ class TestPlotCurve(PlotWidgetTestCase):
                            color=color, linestyle="-", symbol='o')
         self.plot.resetZoom()
 
+        # Test updating color array
+
+        # From array to array
+        newColors = numpy.ones((len(self.xData), 3), dtype=numpy.float32)
+        self.plot.addCurve(self.xData, self.yData,
+                           legend="curve 2",
+                           replace=False, resetzoom=False,
+                           color=newColors, symbol='o')
+
+        # Array to single color
+        self.plot.addCurve(self.xData, self.yData,
+                           legend="curve 2",
+                           replace=False, resetzoom=False,
+                           color='green', symbol='o')
+
+        # single color to array
+        self.plot.addCurve(self.xData, self.yData,
+                           legend="curve 2",
+                           replace=False, resetzoom=False,
+                           color=color, symbol='o')
+
 
 class TestPlotMarker(PlotWidgetTestCase):
     """Basic tests for add*Marker"""
['silx/gui/plot/test/testPlotWidget.py', 'silx/gui/plot/items/core.py']