Удалить отступы от граник, убрать рамку и метки

введите сюда описание изображения

Как мне оставить на изображение только спектрограмму? То есть убрать все отступы, рамку и метки по осям, а зеленое сделать во всю высоту изображения и по ширине...

import librosa
import pandas as pd
import numpy as np
import wave
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import math
 
types = {1: np.int8, 2: np.int16, 4: np.int32}
wav = wave.open("/var/www/2333.wav", mode="r")
(nchannels, sampwidth, framerate, nframes, comptype, compname) = wav.getparams()
 

w, h = (nframes / framerate*25), 150
k = int(nframes/w)
DPI = 80
content = wav.readframes(nframes)
samples = np.frombuffer(content, dtype=types[sampwidth])
plt.figure(0, figsize=(float(w)/DPI, float(h)/DPI), dpi=DPI)

plt.subplot().title(pad=0).plot(samples[0::k])
plt.savefig("/var/www/spectrm.png", dpi=DPI)

В python не силен, первый код который пытаюсь написать на данном языке.


Ответы (2 шт):

Автор решения: DiD

Я не очень хорошо разбираюсь в matplotlib, однако задачу можно решить с помощью ImageMagick.

convert 8aKFs.png -fuzz 5% \
  -transparent '#1b1b1b' \
  -transparent white \
  -transparent '#111111' \
  -transparent '#222222' \
  -transparent '#333333' \
  -transparent '#444444' \
  -transparent '#555555' \
  -transparent '#666666' \
  -transparent '#777777' \
  -transparent '#888888' \
  -transparent '#999999' \
  -transparent '#AAAAAA' \
  -transparent '#BBBBBB' \
  -transparent '#CCCCCC' \
  -transparent '#DDDDDD' \
  -transparent '#EEEEEE' \
  -trim dest.png

Моя команда тоже не самая оптимальная. Но получается неплохой результат.

Результат

Из Python запуск команд можно осуществлять используя subprocess.run().

→ Ссылка
Автор решения: Дмитрий Варзанов

Все получилось, но не удается убрать отступы с лева и права введите сюда описание изображения

Сейчас имею следующий результат. Если играться с

plt.subplots_adjust(left=0, bottom=0, right=1, top=0.990)

Вроде и выравнивает, но как не играйся с отступами не выходит. Например

plt.subplots_adjust(left=0, bottom=0, right=0, top=0.990)

Traceback (most recent call last):
  File "m.py", line 21, in <module>
    plt.subplots_adjust(left=0, bottom=0, right=0, top=0.990)
  File "/usr/local/lib/python3.8/site-packages/matplotlib/pyplot.py", line 2394, in subplots_adjust
    return gcf().subplots_adjust(
  File "/usr/local/lib/python3.8/site-packages/matplotlib/figure.py", line 2385, in subplots_adjust
    self.subplotpars.update(left, bottom, right, top, wspace, hspace)
  File "/usr/local/lib/python3.8/site-packages/matplotlib/figure.py", line 202, in update
    raise ValueError('left cannot be >= right')
ValueError: left cannot be >= right
→ Ссылка