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

введите описание изображения здесь

Другие вопросы по тегам