Matplotlib 直方图,其中 bin 定义了 FLOATS 的范围并由它着色?

Matplotlib histogram where bins are defined range of FLOATS and colored by it?

我进行 RMSF 分析,结果我有浮点数列表(0.1、0.3 等),我想做一个直方图,其中包含定义的浮点数范围。然后我想让每个浮动范围都有相应的颜色。我试着用这个脚本的类比来做到这一点:

from MDAnalysis.analysis.rms import RMSF
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
data = rmsfer.rmsf

N, bins, patches = ax.hist(data, edgecolor='white', linewidth=1)

for i in np.arange(0.3,0.8):
    patches[i].set_facecolor('navy')
for i in np.arange(0.8,1.3):    
    patches[i].set_facecolor('cyan')
for i in np.arange(1.3,1.8):
    patches[i].set_facecolor('yellow')
for i in np.arange(1.8,2.3):
    patches[i].set_facecolor('orange')
for i in np.arange(2.3,3.5):
    patches[i].set_facecolor('red')

我知道浮点数有问题,并尝试用 numpy 和 np.arange 修复它,但当然对我来说并不容易,因为我是 python 的新手。有什么建议吗?

IIUC,您可能希望将 bins 传递给 ax.hist:

fig,ax = plt.subplots()
N, bins, patches = ax.hist(data,bins=[0.3, 0.8,1.3,1.8,2.3,3.5],edgecolor='white')
for (p,c) in zip(patches, ['navy','cyan','yellow','orange','red']):
    p.set_facecolor(c)

输出: