Index: src/sas/qtgui/DataExplorer.py
===================================================================
--- src/sas/qtgui/DataExplorer.py	(revision aadf0af183702570addb989ed535f1c04f06b3df)
+++ src/sas/qtgui/DataExplorer.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -769,5 +769,5 @@
         new_plot = globals()[method_name](self, quickplot=True)
         new_plot.data = data
-        new_plot.plot(marker='o', linestyle='')
+        new_plot.plot(marker='o')
 
         # Update the global plot counter
Index: src/sas/qtgui/GUITests.py
===================================================================
--- src/sas/qtgui/GUITests.py	(revision b46f285a3e36e0f686120f9c8095a9c6da2d81b0)
+++ src/sas/qtgui/GUITests.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -21,4 +21,6 @@
 from UnitTesting import SetGraphRangeTest
 from UnitTesting import LinearFitTest
+from UnitTesting import PlotPropertiesTest
+from UnitTesting import PlotUtilitiesTest
 
 def suite():
@@ -44,4 +46,6 @@
         unittest.makeSuite(SetGraphRangeTest.SetGraphRangeTest, 'test'),
         unittest.makeSuite(LinearFitTest.LinearFitTest, 'test'),
+        unittest.makeSuite(PlotPropertiesTest.PlotPropertiesTest, 'test'),
+        unittest.makeSuite(PlotUtilitiesTest.PlotUtilitiesTest, 'test'),
     )
     return unittest.TestSuite(suites)
Index: src/sas/qtgui/LinearFit.py
===================================================================
--- src/sas/qtgui/LinearFit.py	(revision b46f285a3e36e0f686120f9c8095a9c6da2d81b0)
+++ src/sas/qtgui/LinearFit.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -259,2 +259,4 @@
             return numpy.sqrt(numpy.sqrt(numpy.power(10, x)))
         return x
+
+
Index: src/sas/qtgui/PlotProperties.py
===================================================================
--- src/sas/qtgui/PlotProperties.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
+++ src/sas/qtgui/PlotProperties.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -0,0 +1,98 @@
+from PyQt4 import QtGui
+
+import sas.sasview
+
+from sas.qtgui.PlotUtilities import COLORS, SHAPES
+
+from sas.qtgui.UI.PlotPropertiesUI import Ui_PlotPropertiesUI
+
+class PlotProperties(QtGui.QDialog, Ui_PlotPropertiesUI):
+    """ Dialog for modification of single plot properties """
+    def __init__(self,
+                 parent=None,
+                 color=0,
+                 marker=0,
+                 marker_size=5,
+                 legend=""):
+        super(PlotProperties, self).__init__(parent)
+        self.setupUi(self)
+        self.setFixedSize(self.minimumSizeHint())
+
+        self._parent = parent
+        self._marker = marker if marker else 0
+        self._color = color if color else 0
+        self._legend = legend
+        self._markersize = marker_size if marker_size else 5
+        self.custom_color = False
+
+        # Fill out the color combobox
+        self.cbColor.addItems(COLORS.keys())
+        # data1d.custom_color can now be a simple integer,
+        # specifying COLORS dict index or a string containing
+        # the hex RGB value, e.g. #00FF00
+        if isinstance(self._color, int):
+            self.cbColor.setCurrentIndex(self._color)
+        else:
+            self.cbColor.setCurrentIndex(COLORS.keys().index("Custom"))
+
+        # Fill out the marker combobox
+        self.cbShape.addItems(SHAPES.keys())
+        self.cbShape.setCurrentIndex(self._marker)
+        if self._legend:
+            self.txtLegend.setText(self._legend)
+        self.sbSize.setValue(self._markersize)
+
+        # Connect slots
+        self.cmdCustom.clicked.connect(self.onColorChange)
+        self.cbColor.currentIndexChanged.connect(self.onColorIndexChange)
+
+    def legend(self):
+        ''' return current legend '''
+        return str(self.txtLegend.text())
+
+    def marker(self):
+        ''' return the current shape index in SHAPE '''
+        return self.cbShape.currentIndex()
+
+    def markersize(self):
+        ''' return marker size (int) '''
+        return self.sbSize.value()
+
+    def color(self):
+        ''' return current color: index in COLORS or a hex string '''
+        if self.custom_color:
+            return self._color
+        else:
+            return self.cbColor.currentIndex()
+
+    def onColorChange(self, event):
+        """
+        Pop up the standard Qt color change dialog
+        """
+        # Pick up the chosen color
+        self._color = QtGui.QColorDialog.getColor(parent=self)
+        # Update the text control
+        if self._color.isValid():
+            # Block currentIndexChanged
+            self.cbColor.blockSignals(True)
+            # Add Custom to the color combo box
+            self.cbColor.addItems(["Custom"])
+            self.cbColor.setCurrentIndex(COLORS.keys().index("Custom"))
+            # unblock currentIndexChanged
+            self.cbColor.blockSignals(False)
+            # Save the color as #RRGGBB
+            self.custom_color = True
+            self._color = str(self._color.name())
+   
+    def onColorIndexChange(self, index):
+        """
+        Dynamically add/remove "Custom" color index
+        """
+        # Changed index - assure Custom is deleted
+        custom_index = self.cbColor.findText("Custom")
+        self.custom_color = False
+        if custom_index > -1:
+            self.cbColor.removeItem(custom_index)
+
+        pass # debug hook
+        
Index: src/sas/qtgui/PlotUtilities.py
===================================================================
--- src/sas/qtgui/PlotUtilities.py	(revision 9290b1a2e57458d51b13f1acd1798b999372c7d7)
+++ src/sas/qtgui/PlotUtilities.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -1,5 +1,40 @@
 import sys
 import numpy
-
+from collections import OrderedDict
+
+SHAPES = OrderedDict([
+        ('Circle' , 'o'),
+        ('Point' , '.'),
+        ('Pixel' , ','),
+        ('Triangle Down' , 'v'),
+        ('Triangle Up' , '^'),
+        ('Triangle Left' , '<'),
+        ('Triangle Right' , '>'),
+        ('Octagon' , '8'),
+        ('Square' , 's'),
+        ('Pentagon' , 'p'),
+        ('Star' , '*'),
+        ('Hexagon1' , 'h'),
+        ('Hexagon2' , 'H'),
+        ('Cross +' , 'p'),
+        ('Cross X ' , 'x'),
+        ('Diamond' , 'D'),
+        ('Thin Diamond' , 'd'),
+        ('Line' , '-'),
+        ('Dash' , '--'),
+        ('Vline' , 'vline'),
+        ('Step' , 'step'),
+])
+
+COLORS = OrderedDict([
+        ('Blue', 'b'),
+        ('Green', 'g'),
+        ('Red', 'r'),
+        ('Cyan', 'c'),
+        ('Magenta', 'm'),
+        ('Yellow', 'y'),
+        ('Black', 'k'),
+        ('Custom', 'x'),
+])
 
 def build_matrix(data, qx_data, qy_data):
@@ -57,5 +92,5 @@
         if loop >= max_loop:  # this protects never-ending loop
             break
-        image = fillup_pixels(image=image, weights=weights)
+        image = fillupPixels(image=image, weights=weights)
         loop += 1
 
@@ -108,5 +143,5 @@
     return x_bins, y_bins
 
-def fillup_pixels(image=None, weights=None):
+def fillupPixels(image=None, weights=None):
     """
     Fill z values of the empty cells of 2d image matrix
@@ -221,2 +256,23 @@
     return (lo, hi)
 
+def getValidColor(color):
+    '''
+    Returns a valid matplotlib color
+    '''
+
+    if color is not None:
+        # Check if it's an int
+        if isinstance(color, int):
+            # Check if it's within the range
+            if 0 <= color <=6:
+                color = COLORS.values()[color]
+        # Check if it's an RGB string
+        elif isinstance(color, str):
+            # Assure the correctnes of the string
+            assert(color[0]=="#" and len(color) == 7)
+            import string
+            assert(all(c in string.hexdigits for c in color[1:]))
+        else:
+            raise AttributeError
+
+    return color
Index: src/sas/qtgui/Plotter.py
===================================================================
--- src/sas/qtgui/Plotter.py	(revision b46f285a3e36e0f686120f9c8095a9c6da2d81b0)
+++ src/sas/qtgui/Plotter.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -13,4 +13,6 @@
 from sas.qtgui.SetGraphRange import SetGraphRange
 from sas.qtgui.LinearFit import LinearFit
+from sas.qtgui.PlotProperties import PlotProperties
+import sas.qtgui.PlotUtilities as PlotUtilities
 
 class PlotterWidget(PlotterBase):
@@ -59,5 +61,5 @@
         self.title(title=value.name)
 
-    def plot(self, data=None, marker=None, linestyle=None, hide_error=False):
+    def plot(self, data=None, color=None, marker=None, hide_error=False):
         """
         Add a new plot of self._data to the chart.
@@ -68,35 +70,64 @@
         assert(self._data)
 
-        is_fit = (self._data.id=="fit")
-
-        # Shortcut for the current axis
+        is_fit = (self.data.id=="fit")
+
+        # Shortcuts
         ax = self.ax
-
-        if marker == None:
-            marker = 'o'
-
-        if linestyle == None:
-            linestyle = ''
-
-        if not self._title:
-            self.title(title=self.data.name)
-
-        # plot data with/without errorbars
-        if hide_error:
-            line = ax.plot(self._data.view.x, self._data.view.y,
-                    marker=marker,
-                    linestyle=linestyle,
-                    label=self._title,
-                    picker=True)
+        x = self._data.view.x
+        y = self._data.view.y
+
+        # Marker symbol. Passed marker is one of matplotlib.markers characters
+        # Alternatively, picked up from Data1D as an int index of PlotUtilities.SHAPES dict
+        if marker is None:
+            marker = self.data.symbol
+            marker = PlotUtilities.SHAPES.values()[marker]
+
+        # Plot name
+        self.title(title=self.data.title)
+
+        # Error marker toggle
+        if hide_error is None:
+            hide_error = self.data.hide_error
+
+        # Plot color
+        if color is None:
+            color = self.data.custom_color
+
+        color = PlotUtilities.getValidColor(color)
+
+        markersize = self._data.markersize
+
+        # Draw non-standard markers
+        l_width = markersize * 0.4
+        if marker == '-' or marker == '--':
+            line = self.ax.plot(x, y, color=color, lw=l_width, marker='',
+                             linestyle=marker, label=self._title, zorder=10)[0]
+
+        elif marker == 'vline':
+            y_min = min(y)*9.0/10.0 if min(y) < 0 else 0.0
+            line = self.ax.vlines(x=x, ymin=y_min, ymax=y, color=color,
+                            linestyle='-', label=self._title, lw=l_width, zorder=1)
+
+        elif marker == 'step':
+            line = self.ax.step(x, y, color=color, marker='', linestyle='-',
+                                label=self._title, lw=l_width, zorder=1)[0]
+
         else:
-            line = ax.errorbar(self._data.view.x, self._data.view.y,
-                        yerr=self._data.view.dy, xerr=None,
-                        capsize=2, linestyle='',
-                        barsabove=False,
-                        marker=marker,
-                        lolims=False, uplims=False,
-                        xlolims=False, xuplims=False,
-                        label=self._title,
-                        picker=True)
+            # plot data with/without errorbars
+            if hide_error:
+                line = ax.plot(x, y, marker=marker, color=color, markersize=markersize,
+                        linestyle='', label=self._title, picker=True)
+            else:
+                line = ax.errorbar(x, y,
+                            yerr=self._data.view.dy, xerr=None,
+                            capsize=2, linestyle='',
+                            barsabove=False,
+                            color=color,
+                            marker=marker,
+                            markersize=markersize,
+                            lolims=False, uplims=False,
+                            xlolims=False, xuplims=False,
+                            label=self._title,
+                            picker=True)
 
         # Update the list of data sets (plots) in chart
@@ -112,8 +143,4 @@
         if self.x_label and not is_fit:
             ax.set_xlabel(self.x_label)
-
-        # Title only for regular charts
-        if not self.quickplot and not is_fit:
-            ax.set_title(label=self._title)
 
         # Include scaling (log vs. linear)
@@ -170,5 +197,6 @@
         for id in self.plot_dict.keys():
             plot = self.plot_dict[id]
-            name = plot.name
+            #name = plot.name
+            name = plot.title
             plot_menu = self.contextMenu.addMenu('&%s' % name)
 
@@ -210,5 +238,6 @@
 
             self.actionModifyPlot = plot_menu.addAction('&Modify Plot Property')
-            self.actionModifyPlot.triggered.connect(self.onModifyPlot)
+            self.actionModifyPlot.triggered.connect(
+                                functools.partial(self.onModifyPlot, id))
 
     def createContextMenuQuick(self):
@@ -361,4 +390,12 @@
             return
 
+    def replacePlot(self, id, new_plot):
+        """
+        Remove plot 'id' and add 'new_plot' to the chart.
+        This effectlvely refreshes the chart with changes to one of its plots
+        """
+        self.removePlot(id)
+        self.plot(data=new_plot)
+
     def onRemovePlot(self, id):
         """
@@ -407,9 +444,39 @@
         self.manager.add_data(data_list=[plot])
 
-    def onModifyPlot(self):
+    def onModifyPlot(self, id):
         """
         Allows for MPL modifications to the selected plot
         """
-        pass
+        selected_plot = self.plot_dict[id]
+        current = selected_plot.hide_error
+
+        # Old style color - single integer for enum color
+        # New style color - #hhhhhh
+        color = selected_plot.custom_color
+        # marker symbol and size
+        marker = selected_plot.symbol
+        marker_size = selected_plot.markersize
+        # plot name
+        legend = selected_plot.title
+
+        plotPropertiesWidget = PlotProperties(self,
+                                color=color,
+                                marker=marker,
+                                marker_size=marker_size,
+                                legend=legend)
+        if plotPropertiesWidget.exec_() == QtGui.QDialog.Accepted:
+            marker = plotPropertiesWidget.marker()
+            marker_size = plotPropertiesWidget.markersize()
+            color = plotPropertiesWidget.color()
+            legend = plotPropertiesWidget.legend()
+
+            # Update Data1d
+            selected_plot.markersize = marker_size
+            selected_plot.custom_color = color
+            selected_plot.symbol = marker
+            selected_plot.title = legend
+
+            # Redraw the plot
+            self.replacePlot(id, selected_plot)
 
     def onToggleHideError(self, id):
@@ -461,5 +528,5 @@
             # Directly overwrite the data to avoid label reassignment
             self._data = current_plot
-            self.plot(marker='o', linestyle='')
+            self.plot()
 
         pass # debug hook
@@ -491,5 +558,5 @@
 
         # Plot the line
-        self.plot(data=self.fit_result, marker='', linestyle='solid', hide_error=True)
+        self.plot(data=self.fit_result, marker='-', hide_error=True)
 
 
Index: src/sas/qtgui/UI/PlotPropertiesUI.ui
===================================================================
--- src/sas/qtgui/UI/PlotPropertiesUI.ui	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
+++ src/sas/qtgui/UI/PlotPropertiesUI.ui	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PlotPropertiesUI</class>
+ <widget class="QDialog" name="PlotPropertiesUI">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>319</width>
+    <height>172</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Modify Plot Properties</string>
+  </property>
+  <property name="windowIcon">
+   <iconset resource="main_resources.qrc">
+    <normaloff>:/res/ball.ico</normaloff>:/res/ball.ico</iconset>
+  </property>
+  <layout class="QGridLayout" name="gridLayout_3">
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Symbol</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_2">
+      <item row="0" column="0">
+       <layout class="QGridLayout" name="gridLayout">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label_2">
+          <property name="text">
+           <string>Shape</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1" colspan="2">
+         <widget class="QComboBox" name="cbShape"/>
+        </item>
+        <item row="0" column="3" alignment="Qt::AlignRight">
+         <widget class="QLabel" name="label_4">
+          <property name="text">
+           <string>Size</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="4">
+         <widget class="QSpinBox" name="sbSize">
+          <property name="minimum">
+           <number>1</number>
+          </property>
+          <property name="maximum">
+           <number>72</number>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="label_3">
+          <property name="text">
+           <string>Color</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QComboBox" name="cbColor"/>
+        </item>
+        <item row="1" column="2">
+         <widget class="QPushButton" name="cmdCustom">
+          <property name="text">
+           <string>Custom..</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Legend Label</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="txtLegend"/>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0">
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>120</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="3" column="0">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="main_resources.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>PlotPropertiesUI</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>PlotPropertiesUI</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
Index: src/sas/qtgui/UnitTesting/PlotPropertiesTest.py
===================================================================
--- src/sas/qtgui/UnitTesting/PlotPropertiesTest.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
+++ src/sas/qtgui/UnitTesting/PlotPropertiesTest.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -0,0 +1,43 @@
+import sys
+import unittest
+
+from PyQt4 import QtGui
+
+# set up import paths
+import path_prepare
+
+from UnitTesting.TestUtils import WarningNotImplemented
+
+# Local
+from PlotProperties import PlotProperties
+
+app = QtGui.QApplication(sys.argv)
+
+class PlotPropertiesTest(unittest.TestCase):
+    '''Test the PlotProperties'''
+    def setUp(self):
+        '''Create the PlotProperties'''
+
+        self.widget = PlotProperties(None)
+
+    def tearDown(self):
+        '''Destroy the GUI'''
+        self.widget.close()
+        self.widget = None
+
+    def testDefaults(self):
+        '''Test the GUI in its default state'''
+        self.assertIsInstance(self.widget, QtGui.QDialog)
+        self.assertEqual(self.widget.windowTitle(), "Modify Plot Properties")
+        
+    def testOnColorChange(self):
+        '''Test the response to color change event'''
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testOnColorIndexChange(self):
+        '''Test the response to color index change event'''
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+    
+
+if __name__ == "__main__":
+    unittest.main()
Index: src/sas/qtgui/UnitTesting/PlotUtilitiesTest.py
===================================================================
--- src/sas/qtgui/UnitTesting/PlotUtilitiesTest.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
+++ src/sas/qtgui/UnitTesting/PlotUtilitiesTest.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -0,0 +1,46 @@
+import sys
+import unittest
+from collections import OrderedDict
+
+from UnitTesting.TestUtils import WarningNotImplemented
+
+# Tested module
+import PlotUtilities
+
+class PlotUtilitiesTest(unittest.TestCase):
+    '''Test the Plot Utilities functions'''
+    def setUp(self):
+        '''Empty'''
+        pass
+
+    def tearDown(self):
+        '''Empty'''
+        pass
+
+    def testDefaults(self):
+        """ default method variables values """
+        self.assertIsInstance(PlotUtilities.SHAPES, OrderedDict)
+        self.assertIsInstance(PlotUtilities.COLORS, OrderedDict)
+
+    def testBuildMatrix(self):
+        """ build matrix for 2d plot from a vector """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testGetBins(self):
+        """ test 1d arrays of the index with square binning """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testFillupPixels(self):
+        """ test filling z values of the empty cells of 2d image matrix """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testRescale(sef):
+        """ test the helper function for step based zooming """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testGgetValidColor(self):
+        """ test that the method returns a color understood by MPL """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+if __name__ == "__main__":
+    unittest.main()
Index: src/sas/qtgui/UnitTesting/PlotterTest.py
===================================================================
--- src/sas/qtgui/UnitTesting/PlotterTest.py	(revision b46f285a3e36e0f686120f9c8095a9c6da2d81b0)
+++ src/sas/qtgui/UnitTesting/PlotterTest.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -13,5 +13,5 @@
 from sas.sasgui.guiframe.dataFitting import Data1D
 from sas.sasgui.guiframe.dataFitting import Data2D
-from UnitTesting.TestUtils import QtSignalSpy
+from UnitTesting.TestUtils import WarningNotImplemented
 
 # Tested module
@@ -19,4 +19,5 @@
 
 app = QtGui.QApplication(sys.argv)
+
 
 class PlotterTest(unittest.TestCase):
@@ -223,21 +224,33 @@
     def testOnLinearFit(self):
         """ Checks the response to LinearFit call """
-        pass
+        WarningNotImplemented(sys._getframe().f_code.co_name)
 
     def testOnRemovePlot(self):
         """ Assure plots get removed when requested """
-        pass
+        WarningNotImplemented(sys._getframe().f_code.co_name)
 
     def testRemovePlot(self):
         """ Test plot removal """
-        pass
+        WarningNotImplemented(sys._getframe().f_code.co_name)
 
     def testOnToggleHideError(self):
         """ Test the error bar toggle on plots """
-        pass
+        WarningNotImplemented(sys._getframe().f_code.co_name)
 
     def testOnFitDisplay(self):
         """ Test the fit line display on the chart """
-        pass
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testReplacePlot(self):
+        """ Test the plot refresh functionality """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testReplacePlot(self):
+        """ Test the plot refresh functionality """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
+
+    def testOnModifyPlot(self):
+        """ Test the functionality for changing plot properties """
+        WarningNotImplemented(sys._getframe().f_code.co_name)
 
 if __name__ == "__main__":
Index: src/sas/qtgui/UnitTesting/TestUtils.py
===================================================================
--- src/sas/qtgui/UnitTesting/TestUtils.py	(revision 5032ea687fa17c1323c1124c0a7aa9d80184bf0b)
+++ src/sas/qtgui/UnitTesting/TestUtils.py	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -2,4 +2,8 @@
 from PyQt4.QtGui import *
 from PyQt4.QtTest import *
+
+def WarningNotImplemented(method_name):
+    """ Prints warning about a non-implemented test """
+    print("\nWARNING: %s needs implementing!"%method_name)
 
 class QtSignalSpy(QObject):
Index: src/sas/qtgui/run_tests.bat
===================================================================
--- src/sas/qtgui/run_tests.bat	(revision b46f285a3e36e0f686120f9c8095a9c6da2d81b0)
+++ src/sas/qtgui/run_tests.bat	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -20,2 +20,4 @@
 python -m UnitTesting.SetGraphRangeTest
 python -m UnitTesting.LinearFitTest
+python -m UnitTesting.PlotPropertiesTest
+python -m UnitTesting.PlotUtilitiesTest
Index: src/sas/qtgui/run_tests.sh
===================================================================
--- src/sas/qtgui/run_tests.sh	(revision b46f285a3e36e0f686120f9c8095a9c6da2d81b0)
+++ src/sas/qtgui/run_tests.sh	(revision 87cc73a1ade6168487d1841f4c285fadcf532e0c)
@@ -19,2 +19,4 @@
 python -m UnitTesting.SetGraphRangeTest
 python -m UnitTesting.LinearFitTest
+python -m UnitTesting.PlotPropertiesTest
+python -m UnitTesting.PlotUtilitiesTest
