MatPlotLib分解最大数组值

2024-10-05 14:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个歌曲bpm数组(每分钟拍数),并希望爆炸最大的bpm,无论它在数组中的位置如何。我正在使用python和matplotlib,有人知道如何设置它吗

下面是示例代码

import numpy as np
import matplotlib 
from matplotlib import pyplot as plt

beat = np.array([180,33,46,76,88,222])

plt.pie(beat, explode=explode)
plt.show

Tags: 代码fromimportnumpy示例matplotlibasnp
2条回答

可以在plot命令本身中使用以下单线解决方案

plt.pie(beat, explode=(beat == max(beat)) * 0.1)

解释

(beat == max(beat))将生成一个布尔数组,该数组将在True处具有最大值

array([False, False, False, False, False, True])

然后将其与分解因子(比如0.1)相乘,得到以下数组,可以直接传递给explode参数

array([0. , 0. , 0. , 0. , 0. , 0.1])

np.argmax可以找到最大拍的索引。然后该索引可用于设置explode因子

import numpy as np
import matplotlib
from matplotlib import pyplot as plt

beat = np.array([180, 33, 46, 76, 88, 222])
explode = np.zeros(len(beat))
explode[beat.argmax()] = 0.1
plt.pie(beat, labels=beat, explode=explode)
plt.show()

resulting plot

相关问题 更多 >