1
resposta

Imagem com listras cinzas

Olá. O código que usei foi esse abaixo:

def recomendador(nome_musica):

    cluster = list(projection_m[projection_m['song'] == nome_musica]['cluster_pca'])[0]
    musicas_recomendadas = projection_m[projection_m['cluster_pca'] == cluster][[0, 1, 'song']]
    x_musica = list(projection_m[projection_m['song'] == nome_musica][0])[0]
    y_musica = list(projection_m[projection_m['song'] == nome_musica][1])[0]

    # Distancias euclidianas
    distancias = euclidean_distances(musicas_recomendadas[[0, 1]], [[x_musica, y_musica]])
    musicas_recomendadas['id'] = dados['id']
    musicas_recomendadas['distancias'] = distancias
    recomendada = musicas_recomendadas.sort_values('distancias').head(10) # TOP 10

    # Acessando os dados de cada música com a biblioteca Spotipy (nome e imagem)
    playlist_id = recomendada["id"]

    url  = []
    name = []
    for i in playlist_id:
        track = sp.track(i)
        url.append(track["album"]["images"][1]["url"])
        name.append(track["name"])

    # Plotando as figuras
    plt.figure(figsize=(10,8))
    columns = 5
    for i, u in enumerate(url):
        ax = plt.subplot(len(url) // columns + 1, columns, i + 1)
        image = io.imread(u)
        plt.imshow(image)
        ax.get_yaxis().set_visible(False)
        plt.xticks(color = 'w', fontsize = 0.1)
        plt.yticks(color = 'w', fontsize = 0.1) 
        plt.xlabel(name[i], fontsize = 8)
        plt.tight_layout(h_pad=0.7, w_pad=0)
        plt.subplots_adjust(wspace=None, hspace=None)
        plt.tick_params(bottom = False)
        plt.grid(visible=None)

    plt.show()    

O resultado foram imagens com listras cinzas na vertical. Algum parâmetro que possa ajustar isso? Gostaria tambem de deixar as imagens separadas umas das outras. Com as bordas separadas.

1 resposta

Oii, Alberto! Tudo bem?

Problemas com a URL da imagem, como arquivo indisponível, caminho errado e dentre outras, podem retornar listras cinzas e bug no código. Como sugestão, recomendo verificar esses pontos de cada imagem.

A separação de imagem, sugiro tentar ajustar o espaçamento entre as subplots na função subplots_adjust() do seu código. Você está passando como None em ambas, adicione alguma métrica de espaço como, por exemplo:

 plt.subplots_adjust(wspace=0.5, hspace=0.5)

Espero que as sugestões te ajude! Qualquer dúvida, conte conosco.

Bons estudos, Alberto!