【问题标题】:Changing the color of matplotlib's violin plots更改 matplotlib 小提琴图的颜色
【发布时间】:2014-10-10 03:26:04
【问题描述】:

有没有办法改变 matplotlib 中 violin 绘图的颜色?

默认颜色是这种“棕色”颜色,这还不错,但我想给例如前 3 把小提琴上色以突出它们。我在documentation 中找不到任何参数。有什么想法或技巧可以给小提琴上色吗?

【问题讨论】:

  • 您可以打开一个功能请求来添加该功能吗? Violin 在 1.4 中绘制了一个新功能,并且(显然)仍需要一些改进。

标签: python matplotlib violin-plot


【解决方案1】:

matplotlib.pyplot.violinplot() 说它返回:

将小提琴图的每个组件映射到创建的相应集合实例列表的字典。字典有以下键:

  • bodiesmatplotlib.collections.PolyCollection 实例列表,其中包含每把小提琴的填充区域。
  • [...等等...]

PolyCollections的方法包括:

所以,看起来你可以遍历结果的正文列表并修改每个的 facecolor:

violin_parts = plt.violinplot(...)

for pc in violin_parts['bodies']:
    pc.set_facecolor('red')
    pc.set_edgecolor('black')

虽然在创建它时不能像常见的绘图类型一样设置它,但有点奇怪。我猜这可能是因为该操作创建了太多位(前面提到的PolyCollection 以及其他 5 个LineCollections),所以额外的参数会模棱两可。

【讨论】:

  • 谢谢,for patch, color in zip(vplot['bodies'], colors): patch.set_color(color) 完成了这项工作!
  • 或简称plt.setp,例如plt.setp(violin_parts['bodies'], facecolor='red', edgecolor='black')
  • 只是想说violin_parts.keys() 将列出您可以调整的所有不同部分。例如:dict_keys(['bodies', 'cmaxes', 'cmins', 'cbars', 'cmedians'])。然后,dir(violin_parts['cbars']) 将列出您可以设置的属性。例如:violin_parts['cbars'].set_linewidth(1)
【解决方案2】:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

rrred = '#ff2222'
bluuu = '#2222ff'
x = np.arange(2, 25)
y = np.array([xi * np.random.uniform(0, 1, 10**3) for xi in x]).T

# Create violin plot objects:
fig, ax = plt.subplots(1, 1, figsize = (8,8))
violin_parts = ax.violinplot(y, x, widths = 0.9, showmeans = True, showextrema = True, showmedians = True)

# Make all the violin statistics marks red:
for partname in ('cbars','cmins','cmaxes','cmeans','cmedians'):
    vp = violin_parts[partname]
    vp.set_edgecolor(rrred)
    vp.set_linewidth(1)

# Make the violin body blue with a red border:
for vp in violin_parts['bodies']:
    vp.set_facecolor(bluuu)
    vp.set_edgecolor(rrred)
    vp.set_linewidth(1)
    vp.set_alpha(0.5)

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2021-11-01
    • 2019-12-07
    • 2015-06-28
    • 2013-12-01
    • 2017-03-17
    • 2013-07-21
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多