python Matplotlib条形图半逻辑不显示完整的y标签[已关闭]

fd3cxomn  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(173)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
13小时前关门了。
Improve this question
如何显示下图中的y标签?. Matplotlib剪切一些y标签。

fig, ax = plt.subplots(1,1,figsize = (8,5))

sumsqrt_data ={'PI-ZN' : PI_ZN, 'PI-CHR' : PI_CHR, 'PI-AMIGO' : PI_AMIGO, 'PI-IMC' : PI_IMC, 'PI-SIMC' : PI_SIMC}

courses = list(['PI-ZN', 'PI-CHR', 'PI-AMIGO', 'PI-IMC', 'PI-SIMC'])
values = list([9975.229678280088, 16002.075925234263, 13022.883821302505, 11142.898237215246, 7633.880494079887])

ax.bar(courses, values)
ax.set_yscale('log')

qni6mghb

qni6mghb1#

在这种特殊情况下,由于y值的范围非常有限,对数标度似乎会增加混乱,而不是使图更容易解释。
您可以向对数刻度的y轴添加更多刻度,例如通过MultipleLocator
或者你可以只使用标准的线性刻度。或者,你可以减少条形的底部。函数ax.bar_label注解各个高度。

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(16, 5))

courses = ['PI-ZN', 'PI-CHR', 'PI-AMIGO', 'PI-IMC', 'PI-SIMC']
values = [9975.229678280088, 16002.075925234263, 13022.883821302505, 11142.898237215246, 7633.880494079887]

bars = ax1.bar(courses, values)
ax1.bar_label(bars, fmt='%.1f')
ax1.set_yscale('log')
ax1.yaxis.set_major_locator(MultipleLocator(1000))
ax1.set_title('log scaled y axis')

bars = ax2.bar(courses, values)
ax2.bar_label(bars, fmt='%.1f')
# ax2.set_ylim(ymin=7000) # if needed, cut off part of the bars
ax2.set_title('linear y axis')
plt.tight_layout()
plt.show()

相关问题