# ########################################################################## # Dessine une image surfacique pixel par pixel dans une fenêtre Matplotlib # # Programme réalisé le 01 novembre 2022 par Jean-Christophe MICHEL # # www.gecif.net # # ########################################################################## import matplotlib.pyplot as plt from math import * import random x_min=-40 x_max=40 y_min=-40 y_max=40 res_x=500 res_y=500 tab = [] for py in range(1,res_y+1): ligne=[] for px in range(1,res_x+1): x=x_min+px*(x_max-x_min)/res_x y=y_max-py*(y_max-y_min)/res_y # pour modifier l'image il suffit de changer l'équation de n en fonction de x et de y : n=sin((x/8)**2+(y/8)**2) ligne.append(n) tab.append(ligne) # crée une figure dans la fenêtre et un axe dans la figure : fig=plt.figure(1, figsize=(8, 8)) ax=fig.add_subplot(1,1,1) # n'affiche pas les graduations sur les axes : ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) # agrandi le repère à toute la surface de la figure : plt.gcf().subplots_adjust(left = 0.05, bottom = 0.05, right = 1, top = 0.95, wspace = 0, hspace = 0) # Les palettes prédéfinies sont disponibles en tapant dir(plt.cm) liste_palette=['Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens', 'Greens_r', 'Greys', 'Greys_r', 'OrRd', 'OrRd_r', 'Oranges', 'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 'RdBu_r', 'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r', 'Reds', 'Reds_r', 'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 'YlGn', 'YlGnBu', 'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r'] # choisi une palette au hasard : palette=liste_palette[random.randint(0,len(liste_palette)-1)] # affiche le nom de la palette dans le titre de la figure : plt.title('palette utilisée : '+palette) # affiche l'image : im=ax.imshow(tab, cmap=palette, interpolation='none') # affiche la palette : fig.colorbar(im, ax=ax, extend='min', orientation='vertical') # met à jour la fenêtre pyplot : plt.show()