Matplotlib的小提琴图不跟随rcParam

时间:2015-12-04 03:26:48

标签: python matplotlib

这是matplotlib 1.5.0版。我似乎无法以rcParams服从脸部颜色的方式设置violinpot。我分别为prop_cylefacecolor设置了axespatch密钥无效。例如下面的代码......

import matplotlib
from cycler import cycler


matplotlib.rcParams['axes.prop_cycle'] = cycler('color', ['pink','purple','salmon'])
matplotlib.rcParams['patch.facecolor'] = 'pink'
matplotlib.rcParams['patch.edgecolor'] = 'blue'

import matplotlib.pyplot as plt
from numpy.random import randn

fig = plt.figure(figsize=(12,6))

X = randn(100)

ax = fig.add_subplot(121)
for i in range(3):
    ax.hist(X+2*i)

ax = fig.add_subplot(122)
for i in range(3):
    ax.violinplot(X+2*i)

plt.show()

....产生:

no image description here

很难从图片中辨别,但边缘颜色实际上在小提琴图中设置为蓝色。似乎有violinplot的默认alpha设置,这使得这一点不太明显。但是,面部颜色显然保持默认状态。为什么会这样,我可以强制它使用rcParams值吗?我在绘图后意识到I can set the facecolors manually,但我宁愿让这些情节服从默认值。

1 个答案:

答案 0 :(得分:1)

不幸的是,红色和黄色的颜色在violonplot的代码中是硬编码的。

bodies += [fill(stats['coords'],
                            -vals + pos,
                            vals + pos,
                            facecolor='y',
                            alpha=0.3)]
(...)
artists['cmeans'] = perp_lines(means, pmins, pmaxes, colors='r')

我建议你删除matplotlib github

上的功能请求