1

假设,我有一个饼图如下;我想根据向量中的一些值为切片着色,作为蓝色到红色之间的渐变。蓝色为-1,红色为+1,没有大于1也没有小于-1的值。

fracs = [33,33,33]
starting_angle = 90
axis('equal')
patches, texts, autotexts = pie(fracs, labels = None, autopct='%1.1f%%', startangle=90)

print patches[2]

for item in autotexts:
    item.set_text("")

subplots_adjust(left=0.125, bottom=0.1, right=0.9, top=0.9, wspace=0.0, hspace=-0.4)


savefig('/home/superiois/Downloads/projectx3/GRAIL/pie2')
show()
4

1 回答 1

1
fracs = [33,33,33]
starting_angle = 90
axis('equal')

color_vals = [-1, 0, 1]

my_norm = matplotlib.colors.Normalize(-1, 1) # maps your data to the range [0, 1]
my_cmap = matplotlib.cm.get_cmap('jet') # can pick your color map

patches, texts, autotexts = pie(fracs, labels = None, autopct='%1.1f%%', startangle=90,
                colors=my_cmap(my_norm(color_vals)))

print patches[2]

for item in autotexts:
    item.set_text("")


subplots_adjust(left=0.125, bottom=0.1, right=0.9, top=0.9, wspace=0.0, hspace=-0.4)

show()

您可以使用colorskwarg 设置补丁的颜色。您可以利用现有的颜色映射代码(imshow例如使用)来生成所需的渐变。该Normalize对象负责将您的数据标准化为颜色映射期望作为输入的范围,并且颜色映射将浮点数转换为颜色。

Normalize文档

pie文档

颜色映射文档

于 2013-05-19T22:39:16.553 回答