TypeError: float() argument must be a string or a number, not 'PolyCollection'
TypeError: float() argument must be a string or a number, not 'PolyCollection'
我正在尝试使用 librosa.display.waveplot(y,sr)
绘制音频文件
我的代码:
import librosa.display
ax1 = plt.subplot(gs[1])
y, sr = librosa.load("Audiofilepath")
ax1.plot(librosa.display.waveplot(y, sr))
我绘制了结果。即使我收到以下错误消息
TypeError: float() argument must be a string or a number, not 'PolyCollection'
我在 Whosebug 中查看了上面的错误消息,Results available for numbers, period, nanType
。但不适用于 PolyCollection
.
如有高手librosa
作图,请指导,避免出现此错误
我认为您遵循的文档有误。 librosa.display.waveplot()
的文档可以在 https://librosa.org/doc/latest/generated/librosa.display.waveplot.html.
找到
librosa.display.waveplot()
本身不绘制任何东西,你必须调用 plt.show()
来可视化它。
import librosa
import librosa.display
import matplotlib.pyplot as plt
plt.figure()
y, sr = librosa.load("1.mp3")
librosa.display.waveplot(y, sr)
plt.title('Example of librosa.display.waveplot')
plt.tight_layout()
plt.show()
librosa.display.waveplot()
的return类型是matplotlib.collections.PolyCollection
。 matplotlib.axes.Axes.plot 的参数类型可以是 array-like 或 scalar.
但是你把 PolyCollection
传给了 matplotlib.axes.Axes.plot
。这就是 ax1.plot(librosa.display.waveplot(y, sr))
.
提出 TypeError: float() argument must be a string or a number, not 'PolyCollection'
的原因
我正在尝试使用 librosa.display.waveplot(y,sr)
我的代码:
import librosa.display
ax1 = plt.subplot(gs[1])
y, sr = librosa.load("Audiofilepath")
ax1.plot(librosa.display.waveplot(y, sr))
我绘制了结果。即使我收到以下错误消息
TypeError: float() argument must be a string or a number, not 'PolyCollection'
我在 Whosebug 中查看了上面的错误消息,Results available for numbers, period, nanType
。但不适用于 PolyCollection
.
如有高手librosa
作图,请指导,避免出现此错误
我认为您遵循的文档有误。 librosa.display.waveplot()
的文档可以在 https://librosa.org/doc/latest/generated/librosa.display.waveplot.html.
librosa.display.waveplot()
本身不绘制任何东西,你必须调用 plt.show()
来可视化它。
import librosa
import librosa.display
import matplotlib.pyplot as plt
plt.figure()
y, sr = librosa.load("1.mp3")
librosa.display.waveplot(y, sr)
plt.title('Example of librosa.display.waveplot')
plt.tight_layout()
plt.show()
librosa.display.waveplot()
的return类型是matplotlib.collections.PolyCollection
。 matplotlib.axes.Axes.plot 的参数类型可以是 array-like 或 scalar.
但是你把 PolyCollection
传给了 matplotlib.axes.Axes.plot
。这就是 ax1.plot(librosa.display.waveplot(y, sr))
.
TypeError: float() argument must be a string or a number, not 'PolyCollection'
的原因