Как избавиться от диагональных линий на pcolorme sh с опцией Гуро - PullRequest
1 голос
/ 09 января 2020

I sh, чтобы показать неоднородное имшоу с прозрачностью. Но у меня проблемы с некоторыми дополнительными строками

Вот мой код

import numpy as np
import matplotlib.pyplot as plt


def nuimshow(DIM, COV, matrix, ax, method='gouraud', **kwargs):
    base = 2
    DIM_log = np.log(DIM) / np.log(base)
    COV_log = np.log(COV) / np.log(base)
    if method == 'gouraud':
        ax.pcolormesh(COV_log, DIM_log, matrix, shading='gouraud', **kwargs)
    else:
        no_dim, no_cov = len(DIM), len(COV)
        P_DIM = np.zeros(no_dim + 1)
        P_DIM[0] = (3 * DIM_log[0] - DIM_log[1]) / 2
        P_DIM[1:-1] = (DIM_log[:-1] + DIM_log[1:]) / 2
        P_DIM[-1] = (3 * DIM_log[-1] - DIM_log[-2]) / 2
        P_COV = np.zeros(no_cov + 1)
        P_COV[0] = (3 * COV_log[0] - COV_log[1]) / 2
        P_COV[1:-1] = (COV_log[:-1] + COV_log[1:]) / 2
        P_COV[-1] = (3 * COV_log[-1] - COV_log[-2]) / 2
        ax.pcolormesh(P_COV, P_DIM, matrix, **kwargs)
    ax.set_xticks(COV_log)
    ax.set_yticks(DIM_log)
    ax.set_xticklabels(COV)
    ax.set_yticklabels(DIM)


DIM = [2, 12, 22, 32, 42, 52]
COV = [1, 2, 3, 4, 5, 7, 10, 20, 50, 100]
no_dim, no_cov = len(DIM), len(COV)
matrix = np.random.rand(no_dim, no_cov)

fig, ax = plt.subplots()
nuimshow(DIM, COV, matrix, ax, method='gouraud', alpha=0.1)
fig, ax = plt.subplots()
nuimshow(DIM, COV, matrix, ax, method='other', alpha=0.1)

А вот созданные изображения:

enter image description here

Как видите, существует много диагональных и вертикальных линий.

Это ошибка? Есть ли обходной путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...