<p>回答:<br/>
您在文本中描述的内容被称为<code>swarm plot</code>(或<code>beeswarm plot</code>),并且有这些内容的python实现(esp请参见<a href="https://seaborn.pydata.org/generated/seaborn.swarmplot.html" rel="nofollow noreferrer">seaborn</a>),但也有,例如,在<a href="http://www.cbs.dtu.dk/~eklund/beeswarm/" rel="nofollow noreferrer">R</a>中。也就是说,这些图允许调整每个数据点的y位置,这样它们就不会重叠,但在其他方面是紧密排列的</p>
<p><a href="https://seaborn.pydata.org/generated/seaborn.swarmplot.html" rel="nofollow noreferrer">Seaborn swarm plot</a>:</p>
<p><a href="https://i.stack.imgur.com/Gn6z3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Gn6z3.png" alt="enter image description here"/></a></p>
<p>讨论:<br/>
但你展示的图不是标准的swarm图(几乎总是有奇怪的“手臂”),而是由某种物理引擎驱动的,这种引擎可以沿x和y移动,从而产生你在图中看到的密集结构(例如,像蜘蛛网上的水滴)</p>
<p>也就是说,在上面的图中,通过想象仅沿垂直轴移动的点,以便更好地打包,你可以看到,在大多数情况下,你无法真正做到这一点。(老实说,可能显示的数据可以压缩得更好一点,但不会有太大的变化,例如,左侧的第一只手臂无法得到改善,如果其中任何一只能够得到改善,那只能向内移动一两个点)。相反,要获得如图所示的绘图,需要在<code>x</code>中进行一些运动,就像某种类型的物理引擎所给出的那样,它希望将x保持在接近其原始值的位置,但也允许一些变化。但这是一个需要在数据级别而不是编程级别上决定的权衡</p>
<p>例如,<a href="https://rawgraphs.io/learning/how-to-make-a-beeswarm-plot/" rel="nofollow noreferrer">here's</a>一个绘图库RAWGraphs,它生成一个紧凑的蜂群图,就像问题中的政治图:</p>
<p><a href="https://i.stack.imgur.com/bmxoa.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/bmxoa.png" alt="enter image description here"/></a></p>
<p>但关键的是,他们给出了警告:<br/>
“重要的是要记住,蜂群图使用力来避免视觉模型的单个元素之间的碰撞。这有助于在可视化中看到所有的圆,但也会造成一些情况,<strong>圆没有放置在X轴线性比例上它们应该位于的确切位置。”</p>
<p>或者,类似地,在本<a href="https://gist.github.com/jkschneider/4734864" rel="nofollow noreferrer">this D3 package</a>中的注释中:“其他实现使用强制布局,但强制布局模拟自然会试图通过沿两个轴推动数据点来达到平衡,这可能会破坏数据的顺序。”和<a href="https://vega.github.io/vega/examples/beeswarm-plot/" rel="nofollow noreferrer">here's a nice demo based on D3 force layout</a>其中滑块调整将点拉至正确值的相对力</p>
<p>因此,该图是swarm图和Vionish图(显示分布包络的平滑平均值)之间的折衷,但这两个图都给出了数据的真实表示,在这些图中,这些密密麻麻的图表示是以单个数据点的x位置错误表示为代价的。它们的优点似乎是,您可以对各个点进行着色和单击(如果需要,您可以在其中提供实际的x数据,尽管链接图中没有这样做)</p>
<p><a href="https://seaborn.pydata.org/generated/seaborn.violinplot.html" rel="nofollow noreferrer">Seaborn violin plot</a>:</p>
<p><a href="https://i.stack.imgur.com/Hc2AF.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Hc2AF.png" alt="enter image description here"/></a></p>
<p>就个人而言,我真的很犹豫是否以某种未知的方式歪曲数据(这是物理引擎计算的结果,但对读者来说并不明显)。也许更好的折衷方案是用非圆形补丁填充小提琴,或者类似于<a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6480976.1/" rel="nofollow noreferrer">Raincloud plot</a>的东西</p>