web-dev-qa-db-fra.com

La taille d'image de 1005x132589 pixels est trop grande. Il doit être inférieur à 2 ^ 16 dans chaque direction

J'utilise matplotlib.pyplot pour tracer le graphique à partir de Dataframe. Ici, je veux montrer la hauteur de la barre sur chaque rectangle et j'utilise Text (). Et pour normaliser l'axe Y, j'ai pris Logscale sur l'axe Y. Ci-dessous mon code, je reçois une erreur

Image size of 1005x132589 pixels is too large. It must be less than 2^16 in each direction

Lorsque je n'utilise pas plt.yscale('log'), le code fonctionne correctement. Selon certaines suggestions, j'ai également redémarré mon noyau, mais j'obtiens toujours ce problème. Toute suggestion à ce sujet est la bienvenue.

Mon code:

"
# données collectées dans la liste. list_alarms = df_region.alarmName # list_east = df_region.EAST list_west = df_region.WEST list_north = df_region.NORTH list_south = df_region.SOUTH

# X-ticks customization
N = len(list_alarms)
xpos = np.arange(N)

# this json file is used to update the style of the plot. 
s = json.load(open('style.json'))    
rcParams.update(s)

# Graph customize
plt.rcParams['figure.figsize'] = (15,8)
plt.xlabel('AlarmNames at different Regions')
plt.ylabel('Frequency for alarms in MNG-PAN devices')
plt.title('Alarm Generated by MNG-PAN Device at different Regions')
plt.xticks(xpos,list_alarms, rotation = 280)

# bar1 = plt.bar(xpos - 0.3,list_east, width = 0.2, label = 'EAST', 
    color = '#3154C8')
bar2 = plt.bar(xpos - 0.1, list_west, label = 'WEST', color = 
    '#FF9633')
bar3 = plt.bar(xpos + 0.1, list_north, label = 'NORTH', color = 
    '#12B794')
bar4 = plt.bar(xpos + 0.3, list_south, label = 'SOUTH', color = 
    '#EF6FE3')
plt.yscale('log')
plt.legend()

def autolabel(rects):
    for rect in rects:
        height = rect.get_height()
        if height < 10000:
            plt.text(rect.get_x() + rect.get_width()/2., 1.05*height, 
                 '%d'%int(height),
                 ha = 'center', va = 'bottom', rotation = 90, 
    fontsize=9)


# # autolabel(bar1)
autolabel(bar2)
autolabel(bar3)
autolabel(bar4)

plt.show()

"

J'utilise Jupyter Notebook, Pandas, Python3.

9
debaonline4u

Vérifiez vos variables d'emplacement à plt.text ligne dans la définition de l'autolabel. J'ai eu le même problème et j'ai trouvé cette variable y que j'ai donnée à plt.text la fonction est trop grande par rapport à la valeur de mon jeu de données de tracé.

4
한여진

Vous pouvez ajuster les pixels et mettre à jour votre update_datalim ()

fig = plt.figure(1, figsize=(8, 14), frameon=False, dpi=100)
fig.add_axes([0, 0, 1, 1])
ax = plt.gca()

corners = ((x1, y1), (x2, y2))
ax.update_datalim(corners)
1
Phoenix