gpt4 book ai didi

Matplotlib set_yticklabels 移位

转载 作者:行者123 更新时间:2023-12-03 16:24:51 29 4
gpt4 key购买 nike

鉴于以下代码:

import matplotlib.pyplot as plt
import numpy as np

x = [1.0, 1.1, 2.0, 5.7]
y = np.arange(len(x))
fsize=(2,2)
fig, ax = plt.subplots(1,1,figsize=fsize)
ax.set_yticklabels(['a','b','c','d'])
ax.barh(y,x,align='center',color='grey')
plt.show()
为什么标签没有按预期显示('a' 没有出现并且所有内容都向下移动了 1 位)?
enter image description here

最佳答案

定位器在每一侧生成一个额外的刻度(由于它们在绘制的数据之外,因此未显示)。请尝试以下操作:

>>> ax.get_yticks()
array([-1., 0., 1., 2., 3., 4.])

你有几个选择。您可以对刻度标签进行硬编码以包含额外的刻度(我认为这是一个坏主意):
ax.set_yticklabels(list(' abcd')) # You don't really need 'e'

或者,您可以将刻度设置为您希望它们与标签一起出现的位置:
ax.set_yticks(y)
ax.set_yticklabels(list('abcd'))

对刻度问题更正式的解决方案是设置 Locator y 轴上的对象。刻度标签问题通过设置 Formatter 正式解决对于 y 轴。当您调用 set_yticks 时,这基本上就是幕后发生的事情。和 set_yticklabels无论如何,但这样你就可以完全控制:
from matplotlib.ticker import FixedLocator, FixedFormatter

...

ax.yaxis.set_major_locator(FixedLocator(y))
ax.yaxis.set_major_formatter(FixedFormatter(list('abcd')))

关于Matplotlib set_yticklabels 移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49947153/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com