根据字符权重着色字符串

时间:2016-03-02 23:11:06

标签: python matplotlib

我在python中有一个字符串 text = "hello world" 然后我有一个列表,其中包含字符串每个字符的权重 weights = [25,23,51,60,11,32,34,95,4,3,55]。 现在我想得到一个显示字符串的图形,它的背景根据字符权重着色(就像一个可视化字符权重的颜色图)。 我怎么能用Python(matplotlib)做到这一点?

我应该看起来像这样: enter image description here

字符也可以在色域下面(作为标签的种类)。

SOLUTION:

我现在以下面的方式工作

fig, ax = plt.subplots()

plt.set_cmap(plt.cm.autumn) 

weights = [[1, 6, 3, 10, 8, 3, 2, 5]]
ax.imshow(weights, interpolation='none')
ax.text(0, 0, "h")
ax.text(1, 0, "e")
ax.text(2, 0, "l")
ax.text(3, 0, "l")
ax.text(4, 0, "o")
ax.text(5, 0, " ")
ax.text(5, 0, "w")

结果: enter image description here

1 个答案:

答案 0 :(得分:0)

这是一个代码剪切,我在SO上找到了一个使用所选颜色映射的连续颜色进行绘图的代码。

import matplotlib.pyplot as plt    
import numpy as np
fig, ax = plt.subplots()
cmap = plt.get_cmap('jet_r') #or other color map
multiplicators = np.linspace(1,10)
x = np.linspace(1,10)
for idx, item in enumerate(multiplicators):
    color = cmap(idx/len(multiplicators))
    ax.plot(x, x*item, color=color)

以类似的方式,您可以通过说

对权重进行颜色编码
color = cmap(word_weight/max_weight)

不确定这是否正是您正在寻找的