Je l'ai regardé dans une variété d'endroits pour savoir comment faire cela, mais ne l'ont pas été en mesure de trouver exactement ce que je dois/FIND validation si cela est encore possible.Créer une palette de couleurs pour un histogramme basé hors d'un tableau de données
I ont un histogramme 2d de hauteur sur l'axe y (donnée par RDATA1) et l'intensité sur l'axe x (donnée par l'intensité). L'histogramme trace bien, mais j'aimerais redimensionner la barre de couleurs plutôt que de la normaliser.
Je l'ai déjà défini une correspondance de couleurs, et je veux simplement à l'échelle à l'aide de mes données tracées.
je voudrais à l'échelle les données afin que le colorbar (qui se déroule actuellement de 0-1) échelles de 0 à (nombre de points dans bin)/(len (temps)). C'est ainsi que je peux trouver la probabilité d'un point étant dans un certain bin d'intensité à une certaine taille. Je ne savais pas si je devais faire un deuxième histogramme (que je ne tracerais pas) et exporter les valeurs max/min de cela pour redimensionner la barre de couleurs, ou utiliser un certain nombre de boucles for et de listes pour ajouter des valeurs dans des cases pour chaque hauteur, puis max/min le nombre de valeurs dans ces cases.
codeest joint ci-dessous:
import numpy as np
import file_reader as fr
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
import matplotlib as mpl
time = [0.01649999991059303, 0.02584999985992908]
rdata = [-600.020751953125, -570.04150390625, -540.062255859375, -510.0830078125, -480.1037902832031, -450.1245422363281, -420.1452941894531, -390.1660461425781, -360.1867980957031, -330.2075500488281]
intensity = [[-37.32464981079102, -38.3233528137207], [-37.70231628417969, -38.05134201049805], [-38.27889251708984, -38.82979583740234], [-28.01022720336914, -27.68825912475586], [-8.408446311950684, -8.440451622009277], [-8.749446868896484, -8.750232696533203], [-9.431790351867676, -9.41820240020752], [-10.09048461914062, -10.23848724365234], [-10.84317588806152, -10.84869194030762], [-11.61933135986328, -11.67543029785156]]
range_bins = np.linspace(rdata[0],rdata[-1],(len(rdata)+1))
intensity_bins = np.linspace(-70,30,100)
intensity = np.array(intensity).ravel()
rdata1 = np.repeat(rdata,len(time))
cdict = {'red': ((0.0, 1.0, 1.0),
(0.25, 0.0, 0.0),
(0.55, 0.35, 0.35),
(0.75, 0.75, 0.75),
(1.0, 1.0, 1.0)),
'green': ((0.0, 1.0, 1.0),
(0.25, 0.1, 0.1),
(0.55, 0.6, 0.6),
(0.75, 0.8, 0.8),
(1.0, 0.0, 0.0)),
'blue': ((0.0, 1.0, 1.0),
(0.25, 1.0, 1.0),
(0.55, 0.2, 0.2),
(0.75, 0.1, 0.1),
(1.0, 0.0, 0.0))
}
radar_map = LinearSegmentedColormap('radar_map', cdict)
H, range_bins, intensity_bins = np.histogram2d(rdata1,intensity,bins=(range_bins,intensity_bins))
fig = plt.figure()
X,Y = np.meshgrid(intensity_bins,range_bins)
plt.pcolormesh(X,Y,H, cmap=radar_map)
cax = fig.add_axes([0.95, 0.2, 0.02, 0.6])
cb = mpl.colorbar.ColorbarBase(cax, cmap=radar_map, spacing='proportional')
Toute aide à ce serait massivement apprécié. Désolé pour le poste plutôt long.
Pouvez-vous fournir plutôt un [mcve] de la question (telle que l'on n'a pas besoin de désosser où les données de l'échantillon doit être placé dans votre code). – ImportanceOfBeingErnest
J'ai édité mon poste pour fournir plus de clarté à mon problème, je l'espère – JackLidge