webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

Как точно да изрежете фигура в matplotlib

Често искам да запазя фигура на matplotlib без допълнително бяло пространство около ръба. Мога да използвам спецификация за нулево запълване в стегнато оформление или ограничено оформление, но те изрязват фигурата, без да вземат предвид ширината на линиите или бодлите близо до границата. Както е показано на течащото изображение, matplotlib често изрязва фигурата по плътна линия вместо външна пунктирана линия, отрязвайки двата края на синята крива линия. Чудя се дали има пряк начин да се реши този проблем с изрязването, без да се оставят допълнителни подплънки около фигурата.

точно изрязване

По-долу е малък пример за представяне на текущия проблем, при който и долният, и десният гръбначен стълб са съкратени до половината от желаната ширина:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(2,2), constrained_layout=True)
fig.set_constrained_layout_pads(wspace=0, hspace=0, w_pad=0, h_pad=0)
ax.set_title('Clipped spines')
ax.set_ylabel('Bottom and right')
ax.set_xticks([])
ax.set_yticks([])
ax.tick_params(length=0)
for spine in ax.spines.values():
    spine.set_color('red')
    spine.set_linewidth(5)
fig.savefig('clipped_fig.png', dpi=300)

Срязани изрезки

25.06.2020

  • Моля, предоставете код за възпроизвеждане на вашия проблем. 25.06.2020
  • Опитахте ли bbox_inches='tight' в savefig? 25.06.2020
  • @JodyKlymak Да, но това не решава текущия проблем. 25.06.2020
  • @Abbas Благодаря за напомнянето. Вижте редактиран проблем по-горе 25.06.2020

Отговори:


1

Само предполагам, но вероятно това не е тривиално за решаване, както е посочено.

Това, което е лесно да направите, е просто да изведете достатъчно бяло пространство, за да избегнете изрязване и след това автоматично да изрежете изображението по-късно (например с опция ImageMagick -trim или да го кодирате изрично с PIL, в случай че ImageMagick не е наличен).

25.06.2020
  • Благодаря. Но най-вече работя с векторна графика и този подход може да не работи много добре. 25.06.2020
  • @gthink: Видях png и реших, че това е крайният резултат, който търсите. За съжаление е често срещан проблем за много векторен софтуер да пренебрегват дебелината на линията, когато изчисляват ограничаващи полета. 25.06.2020
  • Нови материали

    Извличане на данни от API — част 2
    Научете как можете да филтрирате филми въз основа на различни категории. Моля, вижте предишния урок (Част 1) : Как да извличам данни от истински API — React / JS..

    Как да предотвратите влизането на някой от вашата кодова база
    // TLDR TypeScript добавя статично въвеждане към JavaScript, улавяйки грешки като препращане към променливи извън обхвата или извикване на функции с грешни аргументи. Той е несъвършен и има..

    Анализ на настроението с помощта на логистична регресия и наивен Бейс
    Нека сравним кой алгоритъм е по-добър за класифициране на туитовете въз основа на техните чувства. Наблюдаван ML При контролираното машинно обучение обикновено имате вход X, който влиза във..

    Нови тенденции в AI и спорта
    Изкуственият интелект е авангардна технология, която дава възможност на машините да изпълняват задачи, които обикновено изискват човешки интелект, като вземане на решения, разпознаване на реч и..

    Графични теоретични алгоритми
    Автори:- Yash Gaherwar , Tanishq Deshpande , Devanshu Dalal , Avinash Dhakne В тази статия ще обсъдим една от най-важните теми на „ Анализ на дизайна на алгоритми“ , т.е. Графика . Ще..

    Samsung и услугата Polyfill
    Като разработчик харесвам услугата polyfill. Използвайки го, поправих стари проблеми със съвместимостта на IE, като добавих един маркер за скрипт. Полифилът е скрипт, внедряващ функция от..

    Оцветяване на графика Sudoku с Neo4j
    Бях щастлив да видя, че скорошна версия на графичните алгоритми Neo4j съдържа алгоритъма за оцветяване K-1 . Този алгоритъм се опитва да присвои цветове на възлите на графика по такъв начин, че..