首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib colorbar扩展,显示值

Matplotlib colorbar扩展,显示值
EN

Stack Overflow用户
提问于 2014-11-15 06:11:45
回答 2查看 3.1K关注 0票数 2

我正在尝试创建一个轮廓,以便用户可以指定轮廓范围,以便他们可以将注意力集中在某个值范围上。根据数据的不同,会有超出用户指定范围的值。我改编了这段代码来说明我的问题:

Python/Matplotlib - Colorbar Range and Display Values

这段代码绘制了从0到2的值,但是我已经设置了轮廓范围'v'(0.1到1.5),这样就会有轮廓之外的值,并且我正在使用扩展(extend=both)来扩展轮廓,从而使该范围外的值显示为颜色(以确保没有白色区域)。我想要的是显示轮廓范围外的最大值(2)和最小值(-0.1),在等高线比例上,以便它们也出现在比例上,我该怎么做?

在less上还有另一种方法

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],[0., 1.0, 2.0],[-0.1, 1.0, 2.0]])
v = np.linspace(0.1, 1.5, 10, endpoint=True)#set so that there are values outside contour
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet,extend='both')
cbar=plt.colorbar(ticks=v,extendrect='True')
plt.show()

我想要的是数据的最小值和数据的最大值显示在扩展上。

我已经修改了等高线标签的代码,以包括等高线的最小值、等高线级别和最大等高线。最小值和最大值不会显示在颜色栏上(更新后的图像如下) zi.min()为-0.1,zi.max()为2。

我研究了y-ticks: print cbar.ax.get_yticks():生成值0到1 print cbar.ax.get_ylim():生成值-0.11和1.11 (扩展栏的末端)

如何才能显示最小值和最大值?我可以使用yticks/ylim信息吗?

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

xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],
               [0., 1.0, 2.0],
               [-0.1, 1.0, 2.0]])
v = np.linspace(0.1, 1.5, 10, endpoint=True)#contour levels
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet,extend='both')
cbarticks=np.hstack([zi.min(),v,zi.max()])#contour tick labels
cbar=plt.colorbar(ticks=cbarticks,extendrect='True',extendfrac='auto',spacing='proportional')
print cbar.ax.get_ylim()
print cbar.ax.get_yticks()#
plt.show()

EN

回答 2

Stack Overflow用户

发布于 2014-11-15 18:20:35

代码语言:javascript
复制
xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],[0., 1.0, 2.0],[-0.1, 1.0, 2.0]])
v = np.linspace(0.1, 1.5, 10, endpoint=True)
tick = v.flatten()
tick = np.insert(tick,[0,10],[-0.1, 2.0])
CS = plt.contourf(xi, yi, zi, len(tick), cmap=plt.cm.jet, levels=tick)
C = plt.contour(xi, yi, zi, len(tick), colors='black', levels=tick )
plt.colorbar(CS, shrink=0.5, aspect=5, ticks=tick)
plt.show()

票数 0
EN

Stack Overflow用户

发布于 2014-11-16 16:45:20

假设您有来自数据的zminzmax,以及来自希望关注特定范围的z值的用户输入的uminumax

您应该能够定义和使用从stdcm=pl.cm.whatever开始的自定义色彩映射表,如下所示

代码语言:javascript
复制
blue      blue  ----------  red      red
zmin      umin              umax     zmax

并最终显式地指定色条上的色块

代码语言:javascript
复制
cbtics = [zmin]+[umin+i*(umax-umin)/n for i in range(n+1)]+[zmax]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26939712

复制
相关文章

相似问题

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