有没有一种方法可以使图例沿水平方向(从左到右)而不是垂直方向运行,而无需指定列数(ncol=...
)?
我正在绘制不同数量的线(大约5至15条),而我宁愿不尝试动态计算最佳列数(即,当标签贴满整个图而不会跑掉的列数)有所不同)。同样,当一行以上时,条目的顺序从上到下,然后从左到右;从左到右,从左到右。如果可以默认为水平,则也可以缓解这种情况。
相关:Matplotlib legend, add items across columns instead of down
最佳答案
似乎此时matplotlib
默认为垂直布局。虽然不理想,但一种选择是将行数设为2,作为一种解决方法:
import math
import numpy as np
npoints = 1000
xs = [np.random.randn(npoints) for i in 10]
ys = [np.random.randn(npoints) for i in 10]
for x, y in zip(xs, ys):
ax.scatter(x, y)
nlines = len(xs)
ncol = int(math.ceil(nlines/2.))
plt.legend(ncol=ncol)
因此,在这里,您将获取要绘制的行数的长度(通过
nlines = len(xs)
),然后通过ncol = int(math.ceil(nlines/2.))
将其转换为许多列,并将其发送到plt.legend(ncol=ncol)
关于python - matplotlib图例先水平排列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21038934/