首页 > 解决方案 > 如何根据其范围为直方图提供自定义重复颜色

问题描述

我想绘制一个范围为 (2000,2005) 且 bin=0.1 的直方图

data=np.random.uniform(2000,2005,[1000,1])
eg:
2003.98154
 2000.2205
 2000.0543
 2003.6567
 2002.0811
 2003.0414
 2004.9626
 2002.3848
 2004.8585
 2001.4287
 2004.4931

但是在直方图中,我想为落在范围内的条提供特定的面色,该范围最终以 0.7 到 0.9 之间的小数

eg:
2000.7 to 2000.9
2001.7 to 2001.9
.
.
2005.7 to 2005.9

那可能吗?怎么做?

标签: pythonhistogram

解决方案


是的,在创建直方图时,plt.hist您可以检索各种信息并修改图形,包括颜色:

import numpy as np
import matplotlib.pyplot as plt

data = np.random.uniform(2000, 2005, [1000, 1])
N, bins, patches = plt.hist(data, bins=[2000 + 0.1 * i for i in range(51)], color="b")
for bin_number, patch in enumerate( patches):
    # float comparison e.g. number_end >= 0.7 and number_end <= 0.9 is unsafe, so we use bin number
    if 7 <= bin_number % 10 < 9:
        patch.set_facecolor("r")
plt.show()

算法结果


推荐阅读