<h3 dir="auto">Problem</h3>
<p dir="auto"><code class="notranslate">plt.scatter</code> accepts both singular and plural forms of the <code class="notranslate">linewidth(s)</code> and <code class="notranslate">edgecolor(s)</code> attributes. The plural forms are documented in the function signature, but the singular forms actually take precedence if both are specified.</p>
<p dir="auto">This adds some complexity for downstream libraries and confusion for their users (cf. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="767380920" data-permission-text="Title is private" data-url="https://github.com/mwaskom/seaborn/issues/2384" data-hovercard-type="issue" data-hovercard-url="/mwaskom/seaborn/issues/2384/hovercard" href="https://github.com/mwaskom/seaborn/issues/2384">mwaskom/seaborn#2384</a>).</p>
<h3 dir="auto">Proposed Solution</h3>
<p dir="auto">Small change: Matplotlib could raise when both the singular and plural forms are specified.</p>
<p dir="auto">Larger change: I will confess that I don't know why the plural forms of the kwargs exist. If there's not a strong reason for the duplication, perhaps they could be deprecated, or at least "formally discouraged"?</p>
<h3 dir="auto">Additional context and prior art</h3>
<p dir="auto">Scatter does a lot of argument checking on the <code class="notranslate">c</code>/<code class="notranslate">color</code> parameters (too much at times, <g-emoji class="g-emoji" alias="wink" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f609.png">😉</g-emoji>), so there's some local precedence for a lot of handholding. On the other hand, matplotlib generally doesn't raise when both long- and short-forms of kwargs are given <code class="notranslate">e.g. </code>edgecolor<code class="notranslate">and</code>ec`).</p>
<p dir="auto">Potentially related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="108381825" data-permission-text="Title is private" data-url="https://github.com/matplotlib/matplotlib/issues/5143" data-hovercard-type="issue" data-hovercard-url="/matplotlib/matplotlib/issues/5143/hovercard" href="https://github.com/matplotlib/matplotlib/issues/5143">#5143</a> or <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="14519327" data-permission-text="Title is private" data-url="https://github.com/matplotlib/matplotlib/issues/2025" data-hovercard-type="issue" data-hovercard-url="/matplotlib/matplotlib/issues/2025/hovercard" href="https://github.com/matplotlib/matplotlib/issues/2025">#2025</a>?</p>
<p dir="auto">Using Homebrew on OS X 10.10.5, i installed <code class="notranslate">homebrew/dupes/tcl-tk</code>, uninstalled and reinstalled <code class="notranslate">python3</code>, then tried to rebuild matplotlib against the newer Python and Tk with <code class="notranslate">pip3 install --no-binary :all: matplotlib</code>. (Note that since I do not have root access to this computer, my Homebrew installation is under <code class="notranslate">$HOME</code>.)</p>
<p dir="auto">When I try to start the <code class="notranslate">embedding_in_tk.py</code> <a href="http://matplotlib.org/examples/user_interfaces/embedding_in_tk.html" rel="nofollow">example</a>, I get the following errors:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ python3 embedding_in_tk.py
objc[5671]: Class TKApplication is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
objc[5671]: Class TKMenu is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
objc[5671]: Class TKContentView is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
objc[5671]: Class TKWindow is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
Traceback (most recent call last):
  File &quot;/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/tkagg.py&quot;, line 22, in blit
    id(data), colormode, id(bbox_array))
_tkinter.TclError: invalid command name &quot;PyAggImagePhoto&quot;

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File &quot;embedding_in_tk.py&quot;, line 34, in &lt;module&gt;
    canvas.show()
  File &quot;/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/backend_tkagg.py&quot;, line 355, in draw
    tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2)
  File &quot;/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/tkagg.py&quot;, line 30, in blit
    id(data), colormode, id(bbox_array))
_tkinter.TclError"><pre class="notranslate"><code class="notranslate">$ python3 embedding_in_tk.py
objc[5671]: Class TKApplication is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
objc[5671]: Class TKMenu is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
objc[5671]: Class TKContentView is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
objc[5671]: Class TKWindow is implemented in both /Users/jlong/opt/tcl-tk/lib/libtk8.6.dylib and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined.
Traceback (most recent call last):
  File "/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/tkagg.py", line 22, in blit
    id(data), colormode, id(bbox_array))
_tkinter.TclError: invalid command name "PyAggImagePhoto"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "embedding_in_tk.py", line 34, in &lt;module&gt;
    canvas.show()
  File "/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/backend_tkagg.py", line 355, in draw
    tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2)
  File "/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/tkagg.py", line 30, in blit
    id(data), colormode, id(bbox_array))
_tkinter.TclError
</code></pre></div>
<p dir="auto">Running <code class="notranslate">otool -L</code> on the compiled <code class="notranslate">_tkagg</code> extension shows it using the system's Tcl/Tk instead of Homebrew's:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ otool -L /Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/_tkagg.cpython-35m-darwin.so
/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/_tkagg.cpython-35m-darwin.so:
    /System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.9)
    /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.9)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)"><pre class="notranslate"><code class="notranslate">$ otool -L /Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/_tkagg.cpython-35m-darwin.so
/Users/jlong/homebrew/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/matplotlib/backends/_tkagg.cpython-35m-darwin.so:
    /System/Library/Frameworks/Tcl.framework/Versions/8.5/Tcl (compatibility version 8.5.0, current version 8.5.9)
    /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk (compatibility version 8.5.0, current version 8.5.9)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
</code></pre></div>
<p dir="auto">So, my question is, am I missing a necessary flag to install matplotlib from source on a Mac with this particular combination of circumstances? Is there a way to tell it to use the Homebrew Tcl/Tk?</p>
<p dir="auto">(Oddly enough, I'm only building my own Tcl/Tk to solve <em>another</em> issue: <a href="http://sourceforge.net/p/tktoolkit/bugs/2966/" rel="nofollow">http://sourceforge.net/p/tktoolkit/bugs/2966/</a> <a href="http://bugs.python.org/issue10731" rel="nofollow">http://bugs.python.org/issue10731</a>)</p>