Как создавать определенные графики с использованием Pandas, а затем сохранять их в виде файлов PNG?

#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')