Solved the double draw issue without using angular.copy() on the base chart object.  Made $watch on chart parameters more selective, and other small changes to prevent directive from making changes to watched objects.