[Python] Definir as cores de um ponto em um gráfico scatter do matplotlib

Discussão em 'Python' iniciado por Stack, Dezembro 9, 2024.

  1. Stack

    Stack Membro Participativo

    Estou tratando dados recebidos de um arduino a partir de um arquivo .txt. No codigo, eu gero 4 arrays (X,Y,Z e F), sendo que X,Y e Z são coordenadas e F é a força do sinal.

    Gostaria de plotar o gráfico 3D com a função scatter do matplotlib, mas definir a cor de cada ponto a partir dos valores de F. Por exemplo, definir um colormap e colorir cada ponto a partir do respectivo valor no vetor F.

    O código abaixo faz o plot 3D das coordenadas, mas todos os pontos são da mesma cor. Como eu posso controlar a cor individualmente de cada ponto?

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np

    def separador(string,sep):
    '''
    Função para ler os valores do Arduino e separá-los em listas
    '''
    lista = []
    k = 0
    j = k
    for i in range(len(string)):
    if string in sep:
    j = i
    pal = string[k:j]
    k = j+1
    lista.append(float(pal))
    return lista

    file = open('saidas_arduino\scanner_oreo.txt')
    output = file.readlines()
    file.close()

    # distancia ate a mesa e forca do sinal
    dist_mesa = float(output[4][0:len(output[4])-1])
    str_mesa = float(output[6][0:len(output[6])-1])

    # linha em que começa a leitura
    line_xyz = 0
    for i in range(20):
    if output == 'x,y,z,str\n':
    line_xyz = i+1
    break

    # salva os dados em vetores
    X = []
    Y = []
    Z = []
    F = []
    for i in range(line_xyz,len(output)-1):
    linha = separador(output,('\n',','))
    X.append(linha[0])
    Y.append(linha[1])
    Z.append(linha[2])
    F.append(linha[3])

    X = np.array(X)
    Y = np.array(Y)
    Z = np.array(Z)
    F = np.array(F)

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    # aqui eu gostaria de definir o colormap pra cada ponto
    ax.set_zlim(-20,20)
    ax.scatter(X,Y,Z)
    plt.show()

    Continue reading...

Compartilhe esta Página