Python:垂直一维点图

Python: Vertical 1D DotPlot

我正在尝试使用 python 创建一维点图,类似于:

https://owncloud.tu-berlin.de/public.php?service=files&t=9ead31dfc988757321c7ac391920c48a

我尝试使用 matplotlib 中的 plot.scatter 方法,但它需要 x 轴数据。我尝试将所有 x 值设置为“1”,但无论如何它都是二维图:

https://owncloud.tu-berlin.de/public.php?service=files&t=ab9f0f521f57526e871259f3a520d94a

如何绘制真正的一维点图?我在 matplotlib-docs 中什么也没找到... 我想使用 matplotlib,但也愿意接受其他建议。

提前致谢!

干杯,雅各布

据我所知,您显示的一维点图也是二维的,但仅限于 x 方向。

我不知道是否已经存在类似的东西,但下面的代码正在做你所要求的。

import numpy as np
import matplotlib.pyplot as mpl

# your data
data = 3. + 0.7 * np.random.randn(N)

# a small spreading of the data in x direction
x = 0.2 * np.random.randn(data.size)

# the plotting
fig,ax = mpl.subplots(1,figsize=(0.5,5))
ax.set_axis_bgcolor('#FFD7B1')
ax.scatter(x,data,alpha=0.2,c='k')
ax.plot([-1,1],[np.mean(data),np.mean(data)],'r',linewidth=2)
ax.set_xlim((-1,1))
ax.set_ylim((1,6))
ax.set_xticks([])
ax.grid(True,axis='y')
ax.set_ylabel('Note')

您自己的解决方案即将推出!只需将宽高比调整为 "squash" 沿 x-axis:

缩小尺寸
import numpy as np
import matplotlib.pyplot as plt
x = np.random.random(100)
y = np.random.randn(100)

fh, ax = plt.subplots(1,1)
ax.scatter(x,y)
ax.set_xlim(-.5, 1.5)
ax.axes.get_xaxis().set_visible(False)  # remove the x-axis and its ticks
ax.set_aspect(5, adjustable='box')  # adjustable='box' is important here
plt.show()