如何使用选项gouraud去除pcolormesh上的对角线

2024-09-30 20:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望展示一个透明的非统一imshow。但我有一些额外的线路问题

这是我的密码

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

如你所见,有许多对角线和垂直线

这是虫子吗?有解决办法吗


Tags: nologlennppltaxcovmatrix