цветовая карта сетки python matplotpib для каждой вершины - PullRequest
0 голосов
/ 27 мая 2019

Есть ли способ явно указать цвет каждой вершины, используя matplotlib Axes3D?
Используя matlab и следующий код, мне удалось создать
следующий график:
enter image description here

    function a = visualize_result(log_dir)
    %% Visualize Supervised Network Results

    mesh_0 = load('1.mat');
    mesh_1 = load('2.mat');
    cd ..
    X = load(curr.mat'));
    cd misc/
    colors = create_colormap(mesh_1,mesh_1);
    figure;
    subplot(1,2,1); colormap(colors);
    plot_scalar_map(mesh_1,[1: size(mesh_1.VERT,1)]');freeze_colors;title('Target');
    view(0,90)
    subplot(1,2,2); colormap(colors(X,:));
    plot_scalar_map(mesh_0,[1: size(mesh_0.VERT,1)]');freeze_colors;title('Source');
    view(0,90)



    function colors = create_colormap(M,N)

    % create colormap
    minx = min(min(M.VERT(:,1)),min(N.VERT(:,1)));
    miny = min(min(M.VERT(:,2)),min(N.VERT(:,2)));
    minz = min(min(M.VERT(:,3)),min(N.VERT(:,3)));
    maxx = max(max(M.VERT(:,1)),max(N.VERT(:,1)));
    maxy = max(max(M.VERT(:,2)),max(N.VERT(:,2)));
    maxz = max(max(M.VERT(:,3)),max(N.VERT(:,3)));
    colors = [(M.VERT(:,1)-minx)/(maxx-minx) (M.VERT(:,2)-miny)/(maxy-miny) (M.VERT(:,3)-minz)/(maxz-minz)];

    end

Я попытался импортировать его в matplotlib, получив следующий результат

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import scipy.io as sio
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

def plot_compare_meshes(mesh_1_path,mesh_2_path,):
    fig = plt.figure()
    ax1 = fig.add_subplot(121, projection='3d'); ax1.view_init(90, -90)

    mesh_1 = sio.loadmat(mesh_1_path)
    X_1 = mesh_1['VERT'][:, 0]
    Y_1 = mesh_1['VERT'][:, 1]
    Z_1 = mesh_1['VERT'][:, 2]
    TRIV_1 = mesh_1['TRIV'] - 1

    colormap = create_colormap(mesh_1['VERT'])


    ax1.plot_trisurf(X_1, Y_1, Z_1, triangles=TRIV_1,color=colormap)

    plt.show()

def create_colormap(VERT):
    VERT = np.double(VERT)
    minx = np.min(VERT[:,0])
    miny = np.min(VERT[:,1])
    minz = np.min(VERT[:,2])
    maxx = np.max(VERT[:,0])
    maxy = np.max(VERT[:,1])
    maxz = np.max(VERT[:,2])
    colors = list(zip(
        ((VERT[:,0] - minx) / (maxx - minx)),
        ((VERT[:, 1] - miny) / (maxy - miny)),
        ((VERT[:, 2] - minz) / (maxz - minz))))
    return colors






if __name__ == "__main__":
    plot_compare_meshes(mesh1,mesh2)


enter image description here Как видно из изображений, я думаю, что я что-то упустил, так как сюжет совсем не гладкий, и мне интересно, правильно ли я называю xargs.
Мне нужно использовать свою собственную карту цветов, а не использовать карту по умолчанию. (Цвета позже переставляются и рисуют другую форму.

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