Python/Matplotlib - 色标范围和显示值

37 投票
2 回答
79732 浏览
提问于 2025-04-16 16:37

在使用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()

2 个回答

1

替代方案:


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

在这里输入图片描述

46

如果我理解你想要的没错的话,我觉得这样做应该可以:

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

在这里输入图片描述

撰写回答