Как использовать Matplotlib для сохранения изображения, созданного с помощью ggplot?
Пока эта часть работает
import matplotlib.pyplot as plt
from ggplot import *
import numpy as np
import pandas as pd
df = pd.DataFrame({'Height':np.random.randn(10),
'Weight':np.random.randn(10),
'Gender': ["Male","Male","Male","Male","Male",
"Female","Female","Female","Female","Female"]})
p=ggplot(aes(x='Height', y='Weight', color='Gender'), data=df) + geom_point()
p.make()
fig = plt.gcf()
ax = plt.gca()
fig.set_figwidth(25, forward=True)
plt.show()
когда я пытаюсь сохранить изображение, оно с треском проваливается, генерируя пустое изображение.
plt.savefig("image.tiff", dpi=300)
Есть идеи? Спасибо!
3 ответа
Я успешно сохранил рисунок в файл, используя объект ggplot save
метод. Вот пример:
p.save('image.tiff', width=12, height=8, dpi=144)
Для получения дополнительной информации см. Комментарий @Johan в этом ответе SO, найденный здесь исходный код или пример в ggplot | документы найдены здесь.
С точки зрения установки размера на экране, кажется, что это невозможно с текущим API. Возможный взлом состоит в том, чтобы клонировать репо и изменить строку 624 так, чтобы она была следующей:
self.fig, self.subplots = plt.subplots(subplot_kw=subplot_kw, figsize=(my_x, my_y)
где my_x и my_y - это размеры x и y, которые вы хотели бы видеть на экране. Затем используйте show
метод:
p.show()
Спасибо всем комментариям - это то, что в итоге получилось. Небольшое повторение в коде, но оно наконец работает.
import matplotlib.pyplot as plt
from ggplot import *
import numpy as np
import pandas as pd
df = pd.DataFrame({'Height':np.random.randn(10),
'Weight':np.random.randn(10),
'Gender': ["Male","Male","Male","Male","Male",
"Female","Female","Female","Female","Female"]})
p=ggplot(aes(x='Height', y='Weight', color='Gender'), data=df) + geom_point()
p.make()
fig = plt.gcf()
ax = plt.gca()
w,h=25,10 #set width and height for both screen and file size
#this part prints on screen the chart
fig.set_figwidth(w, forward=True) #screen
fig.set_figheight(h, forward=True) #screen
plt.show()
#this part saves it to file
p.save(filename, width=w, height=h, dpi=300) #file
Ты пробовал с ggsave(plot = p, filename = 'image.tiff')
или же p.save('image.tiff')
?
EDIT ggsave был удален из ggplot, используйте второе решение вместо.