Pyplot изображен диапазон цветовой шкалы
У меня проблема с созданием контурного сюжета в python и настройкой границ цветовой шкалы.
Я установил их так, что цветовая шкала верна, но изображена только та часть, которая используется.
Мой код выглядит так:
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt("./somefancyasciifile")
xAxisScale = np.linspace(0.0, 80, len(data[0,:]))
yAxisScale = np.linspace(0.0, 80, len(data[0,:]))
fig = plt.figure(figsize = (16, 9), dpi = 100)
ax = fig.add_subplot(111 )
image = ax.contourf(xAxisScale, yAxisScale, data, 51,vmax = 1.0, vmin = 0.0)
colorbar = fig.colorbar(image, ticks = [0.0, 0.5, 1.0])
plt.show()
Цветовая шкала по умолчанию корректно настроена таким образом, что глубокий синий цвет равен 0,0, а красный - 1,0. Мое минимальное значение равно 0,45, а максимальное - чуть ниже 1,0. Несмотря на то, что цвета корректно настроены так, как я хочу, сама цветовая панель варьируется от моего минимального значения до моего максимального значения. Однако я хочу, чтобы на панели отображался весь диапазон от 0,0 до 1,0 с соответствующими цветами.
1 ответ
Это потому, что вы устанавливаете N = 51
, который отменяет vmin
а также vmax
, чтобы просто контур 51 уровня на основе входного массива. Альтернативой было бы установить уровни на весь диапазон от 0 до 1: используя levels
ключевое слово:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(10,10)*0.6+0.4 # data ranging from 0.4 to 1
xAxisScale = np.linspace(0.0, 80, len(data[0,:]))
yAxisScale = np.linspace(0.0, 80, len(data[0,:]))
fig = plt.figure(figsize = (16, 9), dpi = 100)
ax = fig.add_subplot(111 )
image = ax.contourf(xAxisScale, yAxisScale, data,levels=np.arange(0,1.01,0.01),vmin = 0.0,vmax=1.0)
colorbar = fig.colorbar(image, ticks = [0.0, 0.5, 1.0])
plt.show()