如何在 plt.colorbar 中设置刻度数?
Posted
技术标签:
【中文标题】如何在 plt.colorbar 中设置刻度数?【英文标题】:How to set number of ticks in plt.colorbar? 【发布时间】:2014-03-27 13:14:57 【问题描述】:当我用颜色条绘制矩阵时,颜色条有 10 个刻度。由于颜色条必须非常小,因此刻度标签重叠。因此我想将刻度数从 10 减少到 5。我不想减小字体大小!
有没有简单的方法来做到这一点?我不想手动设置刻度...
【问题讨论】:
【参考方案1】:MaxNLocator 代码可能适合您的目的?
类 matplotlib.ticker.MaxNLocator
在不错的位置选择不超过 N 个区间
例如:
from matplotlib import ticker
# (generate plot here)
cb = plt.colorbar()
tick_locator = ticker.MaxNLocator(nbins=5)
cb.locator = tick_locator
cb.update_ticks()
plt.show()
【讨论】:
非常感谢!这是正确(而且非常简单)的解决方案! 目前颜色条的上端没有刻度,但在下端。这对我来说看起来非常不对称和丑陋。有解决办法吗? 好的.... 只需将 cb.ax.yaxis.set_major_locator(matplotlib.ticker.AutoLocator()) 放在 c.b.update_icks() 之前 感谢@FrankTheTank 的补充。对于其他人复制和粘贴该添加,有一个隐藏字符会导致括号上的SyntaxError: invalid syntax
。只需删除并重新输入括号(因此也删除隐藏字符),它会正常工作。
在两个边界处获取刻度的更简单的选项是:LinearLocator(5)
【参考方案2】:
郑重声明,现在也可以通过以下方式实现:
cbar = plt.colorbar()
cbar.ax.locator_params(nbins=5)
与ticker.MaxNLocator
对话。
【讨论】:
这改变了我的 vmin / vmax。不过cbar.set_ticks
工作了。
@user1834164 你是怎么申请cbar.set_ticks
的?以上是关于如何在 plt.colorbar 中设置刻度数?的主要内容,如果未能解决你的问题,请参考以下文章
Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签配置不同情况下颜色条的数值范围以及数据类型(整型浮点型)