我正在尝试创建一个轮廓,以便用户可以指定轮廓范围,以便他们可以将注意力集中在某个值范围上。根据数据的不同,会有超出用户指定范围的值。我改编了这段代码来说明我的问题:
Python/Matplotlib - Colorbar Range and Display Values
这段代码绘制了从0到2的值,但是我已经设置了轮廓范围'v'(0.1到1.5),这样就会有轮廓之外的值,并且我正在使用扩展(extend=both)来扩展轮廓,从而使该范围外的值显示为颜色(以确保没有白色区域)。我想要的是显示轮廓范围外的最大值(2)和最小值(-0.1),在等高线比例上,以便它们也出现在比例上,我该怎么做?
在less上还有另一种方法
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信息吗?
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()

发布于 2014-11-15 18:20:35
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()

发布于 2014-11-16 16:45:20
假设您有来自数据的zmin和zmax,以及来自希望关注特定范围的z值的用户输入的umin和umax。
您应该能够定义和使用从stdcm=pl.cm.whatever开始的自定义色彩映射表,如下所示
blue blue ---------- red red
zmin umin umax zmax并最终显式地指定色条上的色块
cbtics = [zmin]+[umin+i*(umax-umin)/n for i in range(n+1)]+[zmax]https://stackoverflow.com/questions/26939712
复制相似问题