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()
我正在尝试使用 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()