Python/Matplotlib -颜色条范围和显示值

tv6aics1  于 2022-12-13  发布在  Python
关注(0)|答案(2)|浏览(139)

在使用matplotlib绘制等高线图时,我无法让颜色条按我想要的方式显示。我已经阅读了很多类似的例子,但仍然无法得到我想要的结果。
在下图中,我希望更改两项内容。我希望在颜色条上显示最小值和最大值(最大值应为2.0,最小值应为-0.1)。这两个值应位于颜色条的最边缘。同时,我希望颜色条显示每个颜色过渡处的值。例如,在下面的图中,介于2.1和1.8之间,还有另一种颜色转换,其中没有显示值。
有人能帮我吗?我想我可能需要使用norm,但到目前为止它对我不起作用。
谢谢你,

编码:

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]])

plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)
plt.colorbar()
plt.show()
2wnc66cl

2wnc66cl1#

如果我正确地理解了你想要什么,我想这应该能行:

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(-.1, 2.0, 15, endpoint=True)
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet)
x = plt.colorbar(ticks=v)
print x
plt.show()

sg3maiej

sg3maiej2#

备选方案:

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(-.1, 2.0, 15, endpoint=True)
    
    fig, ax = plt.subplots()
    
    plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
    ContourPlot = plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet)
    
    ColorBar = fig.colorbar(ContourPlot) # Add a colorbar to a plot
    ColorBar.set_ticks(v)
    plt.show()

相关问题