Удалить отступы от граник, убрать рамку и метки
Как мне оставить на изображение только спектрограмму? То есть убрать все отступы, рамку и метки по осям, а зеленое сделать во всю высоту изображения и по ширине...
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

