首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pyplot colorbar有一个不需要的额外小数。最大值应该是1.00,但它显示为1.05

pyplot colorbar有一个不需要的额外小数。最大值应该是1.00,但它显示为1.05
EN

Stack Overflow用户
提问于 2018-06-07 02:43:40
回答 1查看 689关注 0票数 1

所以我画了一个等高线,我的颜色条有一个假值。数据严格在0到1之间。为什么会显示1.05?我怎么才能把最高的数字变成1.00呢?

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(1,10, 100)
z = np.random.uniform(0, 1, 100**2).reshape((100, 100))
plt.contourf(x, x, z, cmap=plt.cm.coolwarm, vmin=0., vmax=1.)
cbar = plt.colorbar()
print(cbar.get_clim()) # (0.0, 1.0)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 04:06:35

绘制等高线时,contourf函数会自动选择它认为最合适的水平值,为每个数据点分配一种颜色。这有点类似于将数据放入直方图中。颜色栏中的每个分段都反映这些级别中的一个。

在这种情况下,它选择创建7个级别,matplotlib正在努力(出于我承认我不明白的原因)来适应颜色栏。

您可以通过指定contourf函数应使用的级别数并选择一个能为您提供更可接受的色带的值来解决此问题(您可能不希望低于自动选择的级别数):

代码语言:javascript
复制
plt.contourf(x, x, z, 10, cmap=plt.cm.coolwarm)
plt.colorbar()

或者,如果你真的想让contourf来做这个决定,你可以调整色条上的刻度:

代码语言:javascript
复制
plt.contourf(x, x, z, cmap=plt.cm.coolwarm)
plt.colorbar(ticks=np.linspace(0, 1, 5))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50727450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档