#python #pandas #matplotlib #plot #histogram
#python #pandas #matplotlib #график #гистограмма
Вопрос:
Итак, я пытаюсь создать гистограммы для каждой конкретной переменной в моем наборе данных, а затем сохранить его в виде файла PNG.
Мой код выглядит следующим образом:
import pandas as pd
import matplotlib.pyplot as plt
x=combined_databook.groupby('x_1').hist()
x.figure.savefig("x.png")
Я продолжаю получать «AttributeError: объект ‘Series’ не имеет атрибута ‘figure'»
Ответ №1:
Используйте matplotlib
для создания объектов фигуры и оси, затем укажите pandas
, по каким осям строить график, используя ax
аргумент. Наконец, используйте matplotlib
(или fig) для сохранения рисунка.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Sample Data (3 groups, normally distributed)
df = pd.DataFrame({'gp': np.random.choice(list('abc'), 1000),
'data': np.random.normal(0, 1, 1000)})
fig, ax = plt.subplots()
df.groupby('gp').hist(ax=ax, ec='k', grid=False, bins=20, alpha=0.5)
fig.savefig('your_fig.png', dpi=200)
your_fig.png
Комментарии:
1. Это тот подход, который я бы выбрал. Вы также можете вызвать
savefig
непосредственно объект, напримерfig.savefig('your_fig.png')
, если хотите избежать использования как ооп, так и конечных автоматов2. Привет, я попытался ввести этот код, но он говорит, что fig не определен.
3. Наконец-то у меня получилось. Вы правы, у меня действительно была опечатка. Спасибо
Ответ №2:
Вместо использования *.hist()
я бы использовал matplotlib.pyplot.hist()
.
Пример :
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
y =[10, 20,30,40,100,200,300,400,1000,2000]
x = np.arange(10)
fig = plt.figure()
ax = plt.subplot(111)
ax.plot(x, y, label='$y = Values')
plt.title('my plot')
ax.legend()
plt.show()
fig.savefig('tada.png')