使用python为直方图中的特定条形着色

Sta*_*tas 3 python matplotlib histogram plotly

我有一个直方图(matplotlib或plotly),想要给特定的条着色,女巫在条范围内具有值N(例如,如果N = 131,则色条必须为130-132)。我怎样才能做到这一点?

Mar*_*ans 6

调用时plt.hist(),它将返回三件事。首先,一个数组在每个bin中保存值。其次是每个垃圾箱的值,最后是的数组patches。这些使您可以分别修改每个条。因此,您要做的就是确定该范围是哪个bin 130-132,然后修改颜色,例如:

import numpy as np
import matplotlib.pyplot as plt

values =  np.random.randint(51, 140, 1000)
n, bins, patches = plt.hist(values, bins=np.arange(50, 140, 2), align='left', color='g')
patches[40].set_fc('r')
plt.show()
Run Code Online (Sandbox Code Playgroud)

将显示如下内容:

显示一个红色条的示例

在这里,第41个补丁对应于130-132我选择的垃圾箱的起始范围,50并以2 140的步长上升。因此45总共会有垃圾箱。如果您print bins会看到该索引40就是您想要的索引:

[ 50  52  54  56  58  60  62  64  66  68  70  72  74  76  78  80  82  84
  86  88  90  92  94  96  98 100 102 104 106 108 110 112 114 116 118 120
 122 124 126 128 130 132 134 136 138]
Run Code Online (Sandbox Code Playgroud)