<p dir="auto">Hello. I found an inconsistency between SO (Seaborn Objects) and functional API.</p>
<p dir="auto">When having a values sorted descendingly, SO puts the first value (as ordered in pandas df) to the bottom. This problem occurs only for horizontal bar chart.</p>
<details>
<summary>SO</summary>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/26582151/189832872-6f10ce11-a709-443c-a9a5-11a7a544005f.png"><img src="https://user-images.githubusercontent.com/26582151/189832872-6f10ce11-a709-443c-a9a5-11a7a544005f.png" alt="image" style="max-width: 100%;"></a></p>
</details>
<p dir="auto">This works differently than in the functional API.</p>
<details>
<summary>Functional API</summary>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/26582151/189833204-ec7befad-a1ef-4112-a5bf-0d8cad479912.png"><img src="https://user-images.githubusercontent.com/26582151/189833204-ec7befad-a1ef-4112-a5bf-0d8cad479912.png" alt="image" style="max-width: 100%;"></a></p>
</details>
<p dir="auto">Would it be possible to have the default set as in the functional API with an option to override it? This default would work better with value_counts, since people start looking at the plot from the top-left corner, so this is the place where we want them to show the "most important" category.</p>
<p dir="auto">Three distinctive things happen on the categorical axis in seaborn's categorical plots:</p>
<ol dir="auto">
<li>The scale is drawn to +/- 0.5 from the first and last tick, rather than using the normal margin logic</li>
<li>A grid is not shown, even when it otherwise would be with the active style</li>
<li>If on the y axis, the axis is inverted</li>
</ol>
<p dir="auto">It probably makes sense to have <code class="notranslate">so.Nominal</code> scales (including inferred ones) do this too. Some comments on implementation:</p>
<ol dir="auto">
<li>
<p dir="auto">This is actually trickier than you'd think; I may have posted an issue over in matplotlib about this at one point, or just discussed on their gitter. I believe the suggested approach is to add an invisible artist with sticky edges and set the margin to 0. Feels like a hack! I might have looked into setting the sticky edges <em>on the spine artist</em> at one point?</p>
</li>
<li>
<p dir="auto">Probably straightforward to do in <code class="notranslate">Plotter._finalize_figure</code>. Always a good idea? How do we defer to the theme if the user wants to force a grid? Should the grid be something that is set in the scale object itself</p>
</li>
<li>
<p dir="auto">Probably straightforward to implement but I am not exactly sure where would be best.</p>
</li>
</ol>