Python 自定义matplotlib中辅助y轴上的y标签,以使用逗号格式化为千

Python 自定义matplotlib中辅助y轴上的y标签,以使用逗号格式化为千,python,python-3.x,matplotlib,formatting,subplot,Python,Python 3.x,Matplotlib,Formatting,Subplot,在matplotlib中,我很难在次y轴上设置记号标签的格式,我希望将次y轴标签的格式设置为包含逗号,以分隔数千个(例如20000个而不是20000个)。当使用单个y轴时,我通常只使用: ax.get_yaxis().set_major_formatter(mpl.ticker.FuncFormatter(lambda x, p: format(int(x), ','))) 这正是我想要的。然而,每当我尝试在一个带有第二个y轴的绘图上做同样的事情时,这根本不起作用,实际上它什么都不起作用 示例

在matplotlib中,我很难在次y轴上设置记号标签的格式,我希望将次y轴标签的格式设置为包含逗号,以分隔数千个(例如20000个而不是20000个)。当使用单个y轴时,我通常只使用:

ax.get_yaxis().set_major_formatter(mpl.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
这正是我想要的。然而,每当我尝试在一个带有第二个y轴的绘图上做同样的事情时,这根本不起作用,实际上它什么都不起作用

示例(数字/上下文是没有意义的,只是显示一个最小的工作示例):

上述代码不会像应用于仅具有单个y轴的绘图时通常那样更改次y轴上的标签,它完全不做任何操作,只保留相同的标签

我尝试过的其他一些方法也不起作用,分别获取Ytick,然后手动设置标签,如下所示:

vals = secaxy.get_yticks()
secaxy.set_yticklabels(['{:,}'.format(x) for x in vals])
这也不会对次y轴标签产生任何影响

如果您能为我提供帮助,我将不胜感激

pip install matplotlib==3.2.1
这将解决您的问题


这应该可以解决您的问题。

我目前已经运行matplotlib 3.2.1版,我也尝试过卸载和重新安装,但仍然无法解决问题。还有其他想法吗?在那种情况下,我无法重现这个问题。我使用逗号分隔符值绘制Y轴。删除matplotlib的早期版本并按照您的建议重新安装最新版本后,我可以确认这确实解决了问题,并且次轴记号标签的显示方式与应有的相同。奇怪的是,它从来没有在以前的版本上工作,尽管如此-谢谢你!我目前已经运行matplotlib版本3.2.1,我也尝试过卸载和重新安装,但仍然无法解决问题。还有其他想法吗?在那种情况下,我无法重现这个问题。我使用逗号分隔符值绘制Y轴。删除matplotlib的早期版本并按照您的建议重新安装最新版本后,我可以确认这确实解决了问题,并且次轴记号标签的显示方式与应有的相同。奇怪的是,它从来没有在以前的版本上工作,尽管如此-谢谢你!
pip install matplotlib==3.2.1