Matplotlib水平图例列数设置:ncol还是ncols参数?
Matplotlib图例参数版本差异问题解答
参数不兼容是版本迭代导致的
你用的Matplotlib 3.4.3版本里,图例列数的参数就是ncol,而ncols是3.7.0及以后版本才新增的别名,旧版本不支持这个参数名。如果官方文档是对应新版本的,就会标注ncols,这就造成了文档和你当前版本的不一致。
至于alignment参数,它也是3.7.0版本才新增的图例控制参数,用于调整图例项的对齐方式,你的3.4.3版本还未引入这个参数,所以会触发报错。3.4.3版本的正确用法
继续使用ncol设置图例列数即可,你当前的代码是正确的,能实现图例的水平排列效果。
如果需要类似alignment的对齐调整,在3.4.3版本中可以通过handletextpad(图例标记与文本的间距)、columnspacing(图例列之间的间距)这类参数间接实现,示例代码如下:import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 1) ax = plt.subplot(2, 1, 1) for n in range(1, 5): plt.plot(x, x**n, label="n={0}".format(n)) plt.legend(loc="upper left", bbox_to_anchor=[0, 1], ncol=2, shadow=True, title="Legend", fancybox=True, handletextpad=0.5, columnspacing=1.5) ax.get_legend().get_title().set_color("red") plt.show()避免文档混淆的小技巧
查看Matplotlib官方文档时,记得切换到你正在使用的3.4.3版本(官网文档页面顶部有版本选择下拉框),这样看到的参数说明就会和你的版本完全匹配。
内容的提问来源于stack exchange,提问作者MrT77
相关产品推荐
相关产品推荐

