Сохранить фигуру без пустого места (дубликат)

Используйте методы groupby и idxmax:

  1. передать col date в datetime:
    df['date']=pd.to_datetime(df['date'])
    
  2. получить индекс max столбца date, после groupyby ad_id:
    idx=df.groupby(by='ad_id')['date'].idxmax()
    
  3. получить требуемые данные:
    df_max=df.loc[idx,]
    

Out [54]:

ad_id  price       date
7     22      2 2018-06-11
6     23      2 2018-06-22
2     24      2 2018-06-30
3     28      5 2018-06-22
71
задан Ahmet Tuğrul Bayrak 7 August 2012 в 17:44
поделиться

5 ответов

Вы можете удалить пробел пробела, установив bbox_inches="tight" в savefig:

plt.savefig("test.png",bbox_inches='tight')

Вам придется поместить аргумент в bbox_inches в виде строки, возможно, именно поэтому он не работал раньше для вас.


Возможные дубликаты:

Графы Matplotlib: удаление оси, легенд и пробелов

Как установить поля для фигуры matplotlib?

Уменьшить поля слева и справа на графике matplotlib

112
ответ дан Community 21 August 2018 в 13:43
поделиться
  • 1
    Если у вас есть несколько подзаговоров и вы хотите сохранить их, вы можете использовать это с помощью fig.savefig(). (plt.savefig() в этом случае не будет работать.) – Abhranil Das 21 April 2013 в 13:06
  • 2
    Это не соответствует довольно . Когда вы используете этот параметр bbox_inches, появляется другое значение по умолчанию, которое оставляет некоторое пространство. Если вы действительно хотите избавиться от всего, вам также нужно использовать pad_inches=0.0. Конечно, такая плотная набивка часто срезается, например, экспоненты ... – Mike 19 December 2014 в 17:46
  • 3
    еще несколько пробелов осталось ... – Sleepyhead 24 May 2016 в 08:15
  • 4
    Чтобы удалить черный край, вам может потребоваться установить pad_inches=-0.1 – lenhhoxung 12 October 2017 в 14:09
  • 5
    Это просто не работает, вы все равно получаете пробелы вокруг фигуры. Настройка прозрачной опции (как указано в некоторых ответах) тоже не помогает, пробел все еще существует, он прозрачен. – BjornW 7 April 2018 в 10:50

Это работает для меня, сохраняя массив numpy, построенный с imshow в файл

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10,10))
plt.imshow(img) # your image here
plt.axis("off")
plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, 
        hspace = 0, wspace = 0)
plt.savefig("example2.png", box_inches='tight', dpi=100)
plt.show()
0
ответ дан Alejandro Sazo 21 August 2018 в 13:43
поделиться

Я не могу утверждать, что я точно знаю, почему и как мое решение & rdquo; работает, но это то, что я должен был сделать, когда захотел составить схему нескольких секций аэрофотоснимков; без белых полей; в файл PDF. (Обратите внимание, что я использовал matplotlib внутри ноутбука IPython с флагом -pylab.)

gca().set_axis_off()
subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, 
            hspace = 0, wspace = 0)
margins(0,0)
gca().xaxis.set_major_locator(NullLocator())
gca().yaxis.set_major_locator(NullLocator())
savefig("filename.pdf", bbox_inches = 'tight',
    pad_inches = 0)

Я попытался деактивировать разные части этого, но это всегда приводит к получению белого поля. Возможно, вы даже модифицируете это, чтобы поддерживать живые линии вблизи пределов фигуры от побритости из-за отсутствия полей.

58
ответ дан Johannes S. 21 August 2018 в 13:43
поделиться
  • 1
    Наконец-то, что работает, большое вам спасибо! Кстати, в моем случае были нужны только две линии, использующие set_major_locator. – Florian Brucker 28 October 2015 в 18:54
  • 2
    Я потратил последний час на то, чтобы пробовать разные вещи и не мог избавиться от 1px белой границы. Это было единственное, что сработало - в частности, pad_inches=0, о котором другие ответы не упоминаются. – Annan 16 May 2016 в 17:54
  • 3
    Единственный ответ, который действительно сработал! – Sleepyhead 24 May 2016 в 08:18
  • 4
    set_major_locator был для меня ключом. – kmac 7 August 2016 в 21:44
  • 5
    pad_inches помог мне. – Myles Baker 15 August 2016 в 04:56

Я нашел что-то у Арвинда Перейры ( http://robotics.usc.edu/~ampereir/wordpress/?p=626 ) и, похоже, работал для меня:

plt.savefig(filename, transparent = True, bbox_inches = 'tight', pad_inches = 0)
8
ответ дан mkl 21 August 2018 в 13:43
поделиться
  • 1
    transparent=True создаст впечатление, что нет проблем, но он просто скроет пустое пространство, размеры изображения будут не в порядке. – Vlady Veselinov 28 July 2018 в 16:34

Я нашел, что следующие коды отлично работают для задания.

fig = plt.figure(figsize=[6,6])
ax = fig.add_subplot(111)
ax.imshow(data)
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
ax.set_frame_on(False)
plt.savefig('data.png', dpi=400, bbox_inches='tight',pad_inches=0)
2
ответ дан Richard Yu Liu 21 August 2018 в 13:43
поделиться
  • 1
    Как правило, ответы гораздо полезнее, если они включают объяснение того, что должен делать код, и почему это решает проблему, не представляя других. – Tim Diekmann 24 May 2018 в 15:26
Другие вопросы по тегам:

Похожие вопросы: