Уровни двоичного контура - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть набор данных контура, где значения Z равны 0 или 1. Я хотел бы заполнить область, где Z равно 1. Я не хочу выполнять какую-либо интерполяцию.

Однако, когда я использую функцию

    CS = ax.contour(X1, X2, Z, levels = [1])

Возвращает ошибку, что уровень не находится в диапазоне данных. Я не уверен, как поступить. Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Это можно сделать, используя contourf с двумя уровнями, установив нижний уровень на ноль, а верхний уровень меньше единицы, например:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1, 100)
X, Y = np.meshgrid(x, x)
Z = np.sin(X)*np.sin(Y)

levels = np.linspace(-1, 1, 400)
zdata = np.sin(8*X)*np.sin(8*Y)

plt.contourf(X, Y, 1*(zdata>=0.5), levels=[0,.9]) # polka dot z-values here are 0s and 1s

enter image description here

0 голосов
/ 07 апреля 2020

Для заполненных значений используйте контур. Кроме того, 1 находится за пределами диапазона данных, поскольку это ваш максимальный уровень, а уровни контуров отображаются между диапазонами. Попробуйте:

CS = ax.contourf(X1, X2, Z, levels=[0.2, 0.9])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...