В гистограмме matplotlib при повороте значений цифры стали размазанные

Есть вот такой код, была проблема с тем, что в графике отображались не все значения под осью абсцисс. После добавления строки plt.xticks(x, rotation=90) все значения стали отображаться, однако код стал грузить около 5-6 секунд (раньше грузил мгновенно) и цифры под осью стали размытые. введите сюда описание изображения

x = []
for i in range(len(dataframe['2012-12'].axes[0]) - 1):
    x.append(dataframe['2012-12'].iloc[i][2])

fig, ax = plt.subplots(figsize=(20,10), dpi = 100)

ax.hist(x, bins=80)

ax.set_facecolor('seashell')
fig.set_facecolor('floralwhite')
fig.set_figwidth(10)    #  ширина Figure
fig.set_figheight(6)    #  высота Figure
ax=plt.gca()
plt.xticks(x, rotation=90)
plt.show()
x.clear()

Ответы (1 шт):

Автор решения: hedgehogues

Данный код выполняется мгновенно, вместе с отрисовкой. Вероятно, Вы что-то ещё изменили.

from matplotlib import pyplot as plt
import numpy as np


x = np.linspace(0, 2000)

fig, ax = plt.subplots(figsize=(20,10), dpi = 100)

ax.hist(x, bins=80)

ax.set_facecolor('seashell')
fig.set_facecolor('floralwhite')
fig.set_figwidth(10)    #  ширина Figure
fig.set_figheight(6)    #  высота Figure
ax=plt.gca()
plt.xticks(x, rotation=90)
plt.show()

Для чистоты эксперимента выполним сравнение выполнение кода по времени. Первый вариант без rotation:

import datetime
from datetime import time

from matplotlib import pyplot as plt
import numpy as np


x = np.linspace(0, 2000)


t0 = datetime.datetime.now()
fig, ax = plt.subplots(figsize=(20,10), dpi = 100)

ax.hist(x, bins=80)

ax.set_facecolor('seashell')
fig.set_facecolor('floralwhite')
fig.set_figwidth(10)    #  ширина Figure
fig.set_figheight(6)    #  высота Figure
ax=plt.gca()
plt.xticks(x)
plt.show()

print((datetime.datetime.now() - t0).total_seconds())

Теперь с rotation:

import datetime
from datetime import time

from matplotlib import pyplot as plt
import numpy as np


x = np.linspace(0, 2000)


t0 = datetime.datetime.now()
fig, ax = plt.subplots(figsize=(20,10), dpi = 100)

ax.hist(x, bins=80)

ax.set_facecolor('seashell')
fig.set_facecolor('floralwhite')
fig.set_figwidth(10)    #  ширина Figure
fig.set_figheight(6)    #  высота Figure
ax=plt.gca()
plt.xticks(x, rotation=90)
plt.show()

print((datetime.datetime.now() - t0).total_seconds())

На моей машине время не отличается. Примерно 200 мс.

→ Ссылка