Matplotlib 对于使用matlibplot的多个饼图,只有1个颜色栏

Matplotlib 对于使用matlibplot的多个饼图,只有1个颜色栏,matplotlib,visualization,Matplotlib,Visualization,我有这样一个图,并想添加一个彩色条码(哪个颜色对应什么数字)在右手下面。我看到了一些用于imshow而不是饼图的示例 #!/usr/bin/env python """ http://matplotlib.sf.net/matplotlib.pylab.html#-pie for the docstring. """ from pylab import * fracs = [33,33,33] starting_angle = 90 axis('equal') for item in ran

我有这样一个图,并想添加一个彩色条码(哪个颜色对应什么数字)在右手下面。我看到了一些用于imshow而不是饼图的示例

#!/usr/bin/env python
"""
http://matplotlib.sf.net/matplotlib.pylab.html#-pie for the docstring.
"""
from pylab import *

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

for item in range(9):
    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('RdBu') # can pick your color map

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

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


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.5)

savefig('/home/superiois/Downloads/projectx3/GRAIL/pie1.png')
show()

另外,如果你告诉我如何定制彩色条形码的大小和位置,那就太好了;谢谢。

通常图例更适合离散值,而彩色条更适合连续值。这就是说,这是不可能的,因为mpl允许您从头开始创建颜色条

import matplotlib.pyplot as plt
import matplotlib as mpl

fracs = [33,33,33]
starting_angle = 90

fig, axs = plt.subplots(3,3, figsize=(6,6))
fig.subplots_adjust(hspace=0.1,wspace=0.0)

axs = axs.ravel()

for n in range(9):
    color_vals = [-1, 0, 1]
    my_norm = mpl.colors.Normalize(-1, 1) # maps your data to the range [0, 1]
    my_cmap = mpl.cm.get_cmap('RdBu', len(color_vals)) # can pick your color map

    patches, texts, autotexts = axs[n].pie(fracs, labels = None, autopct='%1.1f%%', startangle=90, colors=my_cmap(my_norm(color_vals)))
    axs[n].set_aspect('equal')

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

ax_cb = fig.add_axes([.9,.25,.03,.5])
cb = mpl.colorbar.ColorbarBase(ax_cb, cmap=my_cmap, norm=my_norm, ticks=color_vals)

cb.set_label('Some label [-]')
cb.set_ticklabels(['One', 'Two', 'Three'])
我添加了自定义标签只是为了显示它是如何工作的,只需删除最后一行即可获得默认值