web-dev-qa-db-fra.com

Créez un tracé de pixels 2D avec matplotlib

J'ai obtenu les données suivantes à partir de certains calculs:

x, y, temp

où x et y sont les coordonnées d'un point dans une boîte 2D de dimensions 10x10. L'espacement est égal à 0,1. Il y a donc 10000 points différents et le fichier résultant ressemble à:

0.0 0.0 5.6
0.1 0.0 3.2
0.2 0.0 4.1
...
9.9 9.9 2.1

Je voudrais préparer une sorte de tracé 2D avec matplotlib, avec 100x100 pixels, où chaque pixel obtient une couleur (couleurs arc-en-ciel allant du rouge au violet, des valeurs minimales à maximales de la troisième colonne) en fonction de la valeur de la 3ème colonne, et les données sont lues à partir de ce fichier. Je me demande quelle est la meilleure approche pour cela avec matplotlib

24
Open the way

Basé sur la façon dont il ressemble à vos triples x, y, temp sont ordonnés (répertoriés dans les lignes), vous pouvez simplement remodeler la colonne "temp".

Par exemple.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

x,y,temp = np.loadtxt('data.txt').T #Transposed for easier unpacking
nrows, ncols = 100, 100
grid = temp.reshape((nrows, ncols))

plt.imshow(grid, extent=(x.min(), x.max(), y.max(), y.min()),
           interpolation='nearest', cmap=cm.Gist_Rainbow)
plt.show()

hsv est la palette de couleurs "Rainbow" à laquelle vous faisiez référence. Edit: Vous vouliez probablement en fait matplotlib.cm.Gist_Rainbow. matplotlib.cm.hsv redevient rouge en bas. Voir ici: https://matplotlib.org/users/colormaps.html pour une liste des colormaps.

Si vos triplets x, y, temp ne sont pas réellement ordonnés, alors vous devrez modifier vos points. J'ai montré un exemple de cela dans ma réponse à votre question précédente.

enter image description here

30
Joe Kington